@searchspring/snap-controller 0.73.7 → 0.75.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 +124 -68
- 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 +84 -58
- package/dist/cjs/Search/SearchController.d.ts.map +1 -1
- package/dist/cjs/Search/SearchController.js +142 -66
- package/dist/cjs/utils/isClickWithinProductLink.d.ts +1 -1
- package/dist/cjs/utils/isClickWithinProductLink.d.ts.map +1 -1
- package/dist/cjs/utils/isClickWithinProductLink.js +14 -12
- 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 +101 -28
- 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 +64 -22
- package/dist/esm/Search/SearchController.d.ts.map +1 -1
- package/dist/esm/Search/SearchController.js +106 -22
- package/dist/esm/utils/isClickWithinProductLink.d.ts +1 -1
- package/dist/esm/utils/isClickWithinProductLink.d.ts.map +1 -1
- package/dist/esm/utils/isClickWithinProductLink.js +13 -12
- package/package.json +10 -10
|
@@ -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,CA8N7B;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,CAqK9B;IAEF,SAAS,cAAqB,OAAO,EAAE,GAAG,OAAO,KAAG,QAAQ,IAAI,CAAC,CAY/D;CACF"}
|
|
@@ -84,6 +84,9 @@ var defaultConfig = {
|
|
|
84
84
|
selector: '',
|
|
85
85
|
action: '',
|
|
86
86
|
globals: {},
|
|
87
|
+
beacon: {
|
|
88
|
+
enabled: true,
|
|
89
|
+
},
|
|
87
90
|
settings: {
|
|
88
91
|
integratedSpellCorrection: false,
|
|
89
92
|
initializeFromUrl: true,
|
|
@@ -113,9 +116,17 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
113
116
|
_this.track = {
|
|
114
117
|
banner: {
|
|
115
118
|
impression: function (_banner) {
|
|
116
|
-
var _a, _b, _c, _d;
|
|
119
|
+
var _a, _b, _c, _d, _e, _f;
|
|
120
|
+
if (!_banner) {
|
|
121
|
+
_this.log.warn('No banner provided to track.banner.impression');
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
117
124
|
var responseId = _banner.responseId, uid = _banner.uid;
|
|
118
|
-
if (
|
|
125
|
+
if (!_this.events[responseId]) {
|
|
126
|
+
_this.log.warn('No responseId found in controller, ensure correct controller is used');
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
else if ((_d = (_c = (_b = (_a = _this.events) === null || _a === void 0 ? void 0 : _a[responseId]) === null || _b === void 0 ? void 0 : _b.banner) === null || _c === void 0 ? void 0 : _c[uid]) === null || _d === void 0 ? void 0 : _d.impression) {
|
|
119
130
|
return;
|
|
120
131
|
}
|
|
121
132
|
var banner = { uid: uid };
|
|
@@ -125,13 +136,21 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
125
136
|
results: [],
|
|
126
137
|
};
|
|
127
138
|
_this.eventManager.fire('track.banner.impression', { controller: _this, product: { uid: uid }, trackEvent: data });
|
|
128
|
-
_this.tracker.events.autocomplete.impression({ data: data, siteId: (
|
|
139
|
+
((_e = _this.config.beacon) === null || _e === void 0 ? void 0 : _e.enabled) && _this.tracker.events.autocomplete.impression({ data: data, siteId: (_f = _this.config.globals) === null || _f === void 0 ? void 0 : _f.siteId });
|
|
129
140
|
_this.events[responseId].banner[uid] = _this.events[responseId].banner[uid] || {};
|
|
130
141
|
_this.events[responseId].banner[uid].impression = true;
|
|
131
142
|
},
|
|
132
143
|
click: function (e, banner) {
|
|
133
144
|
var _a, _b, _c;
|
|
145
|
+
if (!banner) {
|
|
146
|
+
_this.log.warn('No banner provided to track.banner.click');
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
134
149
|
var responseId = banner.responseId, uid = banner.uid;
|
|
150
|
+
if (!_this.events[responseId]) {
|
|
151
|
+
_this.log.warn('No responseId found in controller, ensure correct controller is used');
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
135
154
|
if ((0, isClickWithinBannerLink_1.isClickWithinBannerLink)(e)) {
|
|
136
155
|
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) {
|
|
137
156
|
return;
|
|
@@ -145,15 +164,23 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
145
164
|
}
|
|
146
165
|
},
|
|
147
166
|
clickThrough: function (e, _a) {
|
|
148
|
-
var _b;
|
|
167
|
+
var _b, _c;
|
|
149
168
|
var uid = _a.uid, responseId = _a.responseId;
|
|
169
|
+
if (!uid) {
|
|
170
|
+
_this.log.warn('No banner uid provided to track.banner.clickThrough');
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
if (!_this.events[responseId]) {
|
|
174
|
+
_this.log.warn('No responseId found in controller, ensure correct controller is used');
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
150
177
|
var banner = { uid: uid };
|
|
151
178
|
var data = {
|
|
152
179
|
responseId: responseId,
|
|
153
180
|
banners: [banner],
|
|
154
181
|
};
|
|
155
182
|
_this.eventManager.fire('track.banner.clickThrough', { controller: _this, event: e, product: { uid: uid }, trackEvent: data });
|
|
156
|
-
_this.tracker.events.autocomplete.clickThrough({ data: data, siteId: (
|
|
183
|
+
((_b = _this.config.beacon) === null || _b === void 0 ? void 0 : _b.enabled) && _this.tracker.events.autocomplete.clickThrough({ data: data, siteId: (_c = _this.config.globals) === null || _c === void 0 ? void 0 : _c.siteId });
|
|
157
184
|
_this.events[responseId].banner[uid] = _this.events[responseId].banner[uid] || {};
|
|
158
185
|
_this.events[responseId].banner[uid].clickThrough = true;
|
|
159
186
|
setTimeout(function () {
|
|
@@ -163,24 +190,41 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
163
190
|
},
|
|
164
191
|
product: {
|
|
165
192
|
clickThrough: function (e, result) {
|
|
166
|
-
var _a, _b;
|
|
193
|
+
var _a, _b, _c, _d;
|
|
194
|
+
if (!result) {
|
|
195
|
+
_this.log.warn('No result provided to track.product.clickThrough');
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
167
198
|
var responseId = result.responseId;
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
}
|
|
199
|
+
if (!_this.events[responseId]) {
|
|
200
|
+
_this.log.warn('No responseId found in controller, ensure correct controller is used');
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
var type = (['product', 'banner'].includes(result.type) ? result.type : 'product');
|
|
204
|
+
var item = __assign({ type: type, uid: result.id ? '' + result.id : '' }, (type === 'product'
|
|
205
|
+
? {
|
|
206
|
+
parentId: result.id ? '' + result.id : '',
|
|
207
|
+
sku: ((_a = result.mappings.core) === null || _a === void 0 ? void 0 : _a.sku) ? '' + ((_b = result.mappings.core) === null || _b === void 0 ? void 0 : _b.sku) : undefined,
|
|
208
|
+
}
|
|
209
|
+
: {}));
|
|
174
210
|
var data = {
|
|
175
211
|
responseId: responseId,
|
|
176
212
|
results: [item],
|
|
177
213
|
};
|
|
178
214
|
_this.eventManager.fire('track.product.clickThrough', { controller: _this, event: e, product: result, trackEvent: data });
|
|
179
|
-
_this.tracker.events.autocomplete.clickThrough({ data: data, siteId: (
|
|
215
|
+
((_c = _this.config.beacon) === null || _c === void 0 ? void 0 : _c.enabled) && _this.tracker.events.autocomplete.clickThrough({ data: data, siteId: (_d = _this.config.globals) === null || _d === void 0 ? void 0 : _d.siteId });
|
|
180
216
|
},
|
|
181
217
|
click: function (e, result) {
|
|
182
218
|
var _a, _b, _c, _d, _e, _f;
|
|
219
|
+
if (!result) {
|
|
220
|
+
_this.log.warn('No result provided to track.product.click');
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
183
223
|
var responseId = result.responseId;
|
|
224
|
+
if (!_this.events[responseId]) {
|
|
225
|
+
_this.log.warn('No responseId found in controller, ensure correct controller is used');
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
184
228
|
if (result.type === 'banner' && (0, isClickWithinBannerLink_1.isClickWithinBannerLink)(e)) {
|
|
185
229
|
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) {
|
|
186
230
|
return;
|
|
@@ -205,30 +249,47 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
205
249
|
}
|
|
206
250
|
},
|
|
207
251
|
impression: function (result) {
|
|
208
|
-
var _a, _b, _c, _d, _e;
|
|
252
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
253
|
+
if (!result) {
|
|
254
|
+
_this.log.warn('No result provided to track.product.impression');
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
209
257
|
var responseId = result.responseId;
|
|
210
|
-
if (
|
|
258
|
+
if (!_this.events[responseId]) {
|
|
259
|
+
_this.log.warn('No responseId found in controller, ensure correct controller is used');
|
|
211
260
|
return;
|
|
212
261
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
262
|
+
else 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.impression) {
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
var type = (['product', 'banner'].includes(result.type) ? result.type : 'product');
|
|
266
|
+
var item = __assign({ type: type, uid: result.id ? '' + result.id : '' }, (type === 'product'
|
|
267
|
+
? {
|
|
268
|
+
parentId: result.id ? '' + result.id : '',
|
|
269
|
+
sku: ((_d = result.mappings.core) === null || _d === void 0 ? void 0 : _d.sku) ? '' + ((_e = result.mappings.core) === null || _e === void 0 ? void 0 : _e.sku) : undefined,
|
|
270
|
+
}
|
|
271
|
+
: {}));
|
|
219
272
|
var data = {
|
|
220
273
|
responseId: responseId,
|
|
221
274
|
results: [item],
|
|
222
275
|
banners: [],
|
|
223
276
|
};
|
|
224
277
|
_this.eventManager.fire('track.product.impression', { controller: _this, product: result, trackEvent: data });
|
|
225
|
-
_this.tracker.events.autocomplete.impression({ data: data, siteId: (
|
|
278
|
+
((_f = _this.config.beacon) === null || _f === void 0 ? void 0 : _f.enabled) && _this.tracker.events.autocomplete.impression({ data: data, siteId: (_g = _this.config.globals) === null || _g === void 0 ? void 0 : _g.siteId });
|
|
226
279
|
_this.events[responseId].product[result.id] = _this.events[responseId].product[result.id] || {};
|
|
227
280
|
_this.events[responseId].product[result.id].impression = true;
|
|
228
281
|
},
|
|
229
282
|
addToCart: function (result) {
|
|
230
|
-
var _a, _b, _c;
|
|
283
|
+
var _a, _b, _c, _d;
|
|
284
|
+
if (!result) {
|
|
285
|
+
_this.log.warn('No result provided to track.product.addToCart');
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
231
288
|
var responseId = result.responseId;
|
|
289
|
+
if (!_this.events[responseId]) {
|
|
290
|
+
_this.log.warn('No responseId found in controller, ensure correct controller is used');
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
232
293
|
var product = {
|
|
233
294
|
parentId: result.id,
|
|
234
295
|
uid: result.id,
|
|
@@ -241,18 +302,22 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
241
302
|
results: [product],
|
|
242
303
|
};
|
|
243
304
|
_this.eventManager.fire('track.product.addToCart', { controller: _this, product: result, trackEvent: data });
|
|
244
|
-
_this.tracker.events.autocomplete.addToCart({ data: data, siteId: (
|
|
305
|
+
((_c = _this.config.beacon) === null || _c === void 0 ? void 0 : _c.enabled) && _this.tracker.events.autocomplete.addToCart({ data: data, siteId: (_d = _this.config.globals) === null || _d === void 0 ? void 0 : _d.siteId });
|
|
245
306
|
},
|
|
246
307
|
},
|
|
247
308
|
redirect: function (_a) {
|
|
248
|
-
var _b;
|
|
309
|
+
var _b, _c;
|
|
249
310
|
var redirectURL = _a.redirectURL, responseId = _a.responseId;
|
|
311
|
+
if (!redirectURL) {
|
|
312
|
+
_this.log.warn('No redirectURL provided to track.redirect');
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
250
315
|
var data = {
|
|
251
316
|
responseId: responseId,
|
|
252
317
|
redirect: redirectURL,
|
|
253
318
|
};
|
|
254
319
|
_this.eventManager.fire('track.redirect', { controller: _this, redirectURL: redirectURL, trackEvent: data });
|
|
255
|
-
_this.tracker.events.autocomplete.redirect({ data: data, siteId: (
|
|
320
|
+
((_b = _this.config.beacon) === null || _b === void 0 ? void 0 : _b.enabled) && _this.tracker.events.autocomplete.redirect({ data: data, siteId: (_c = _this.config.globals) === null || _c === void 0 ? void 0 : _c.siteId });
|
|
256
321
|
},
|
|
257
322
|
};
|
|
258
323
|
_this.handlers = {
|
|
@@ -515,18 +580,18 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
515
580
|
});
|
|
516
581
|
}); };
|
|
517
582
|
_this.search = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
518
|
-
var params, err_3, searchProfile, _a, meta, response, responseId_1, impressedResultIds, afterSearchProfile, err_4, afterStoreProfile, err_5, err_6;
|
|
583
|
+
var params, err_3, searchProfile, _a, meta, response, responseId_1, previousResponseId, repeatedSearch, impressedResultIds, afterSearchProfile, err_4, data, afterStoreProfile, err_5, err_6;
|
|
519
584
|
var _this = this;
|
|
520
|
-
var _b, _c, _d, _e;
|
|
521
|
-
return __generator(this, function (
|
|
522
|
-
switch (
|
|
585
|
+
var _b, _c, _d, _e, _f;
|
|
586
|
+
return __generator(this, function (_g) {
|
|
587
|
+
switch (_g.label) {
|
|
523
588
|
case 0:
|
|
524
|
-
|
|
589
|
+
_g.trys.push([0, 16, 17, 18]);
|
|
525
590
|
if (!!this.initialized) return [3 /*break*/, 2];
|
|
526
591
|
return [4 /*yield*/, this.init()];
|
|
527
592
|
case 1:
|
|
528
|
-
|
|
529
|
-
|
|
593
|
+
_g.sent();
|
|
594
|
+
_g.label = 2;
|
|
530
595
|
case 2:
|
|
531
596
|
// if urlManager has no query, there will be no need to get params and no query
|
|
532
597
|
if (!this.urlManager.state.query) {
|
|
@@ -540,18 +605,18 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
540
605
|
this.store.loading = true;
|
|
541
606
|
// clear the redirect URL until proper abort functionality is implemented
|
|
542
607
|
this.store.merchandising.redirect = '';
|
|
543
|
-
|
|
608
|
+
_g.label = 3;
|
|
544
609
|
case 3:
|
|
545
|
-
|
|
610
|
+
_g.trys.push([3, 5, , 6]);
|
|
546
611
|
return [4 /*yield*/, this.eventManager.fire('beforeSearch', {
|
|
547
612
|
controller: this,
|
|
548
613
|
request: params,
|
|
549
614
|
})];
|
|
550
615
|
case 4:
|
|
551
|
-
|
|
616
|
+
_g.sent();
|
|
552
617
|
return [3 /*break*/, 6];
|
|
553
618
|
case 5:
|
|
554
|
-
err_3 =
|
|
619
|
+
err_3 = _g.sent();
|
|
555
620
|
if ((err_3 === null || err_3 === void 0 ? void 0 : err_3.message) == 'cancelled') {
|
|
556
621
|
this.log.warn("'beforeSearch' middleware cancelled");
|
|
557
622
|
return [2 /*return*/];
|
|
@@ -565,7 +630,7 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
565
630
|
searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
|
|
566
631
|
return [4 /*yield*/, this.client.autocomplete(params)];
|
|
567
632
|
case 7:
|
|
568
|
-
_a =
|
|
633
|
+
_a = _g.sent(), meta = _a[0], response = _a[1];
|
|
569
634
|
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
570
635
|
if (!response.meta) {
|
|
571
636
|
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
@@ -575,7 +640,9 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
575
640
|
this.log.profile(searchProfile);
|
|
576
641
|
responseId_1 = response.tracking.responseId;
|
|
577
642
|
this.events[responseId_1] = this.events[responseId_1] || { product: {}, banner: {} };
|
|
578
|
-
|
|
643
|
+
previousResponseId = (_d = this.store.results[0]) === null || _d === void 0 ? void 0 : _d.responseId;
|
|
644
|
+
repeatedSearch = previousResponseId && previousResponseId === responseId_1;
|
|
645
|
+
if (repeatedSearch) {
|
|
579
646
|
impressedResultIds = Object.keys(this.events[responseId_1].product || {}).filter(function (resultId) { var _a, _b; return (_b = (_a = _this.events[responseId_1].product) === null || _a === void 0 ? void 0 : _a[resultId]) === null || _b === void 0 ? void 0 : _b.impression; });
|
|
580
647
|
this.events[responseId_1] = {
|
|
581
648
|
product: impressedResultIds.reduce(function (acc, resultId) {
|
|
@@ -587,22 +654,21 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
587
654
|
}
|
|
588
655
|
else {
|
|
589
656
|
this.events[responseId_1] = { product: {}, banner: {} };
|
|
590
|
-
this.lastSearchQuery = (_e = response.search) === null || _e === void 0 ? void 0 : _e.query;
|
|
591
657
|
}
|
|
592
658
|
afterSearchProfile = this.profiler.create({ type: 'event', name: 'afterSearch', context: params }).start();
|
|
593
|
-
|
|
659
|
+
_g.label = 8;
|
|
594
660
|
case 8:
|
|
595
|
-
|
|
661
|
+
_g.trys.push([8, 10, , 11]);
|
|
596
662
|
return [4 /*yield*/, this.eventManager.fire('afterSearch', {
|
|
597
663
|
controller: this,
|
|
598
664
|
request: params,
|
|
599
665
|
response: response,
|
|
600
666
|
})];
|
|
601
667
|
case 9:
|
|
602
|
-
|
|
668
|
+
_g.sent();
|
|
603
669
|
return [3 /*break*/, 11];
|
|
604
670
|
case 10:
|
|
605
|
-
err_4 =
|
|
671
|
+
err_4 = _g.sent();
|
|
606
672
|
if ((err_4 === null || err_4 === void 0 ? void 0 : err_4.message) == 'cancelled') {
|
|
607
673
|
this.log.warn("'afterSearch' middleware cancelled");
|
|
608
674
|
afterSearchProfile.stop();
|
|
@@ -618,20 +684,24 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
618
684
|
this.log.profile(afterSearchProfile);
|
|
619
685
|
// update the store
|
|
620
686
|
this.store.update(response);
|
|
687
|
+
if (!repeatedSearch) {
|
|
688
|
+
data = { responseId: responseId_1 };
|
|
689
|
+
((_e = this.config.beacon) === null || _e === void 0 ? void 0 : _e.enabled) && this.tracker.events.autocomplete.render({ data: data, siteId: (_f = this.config.globals) === null || _f === void 0 ? void 0 : _f.siteId });
|
|
690
|
+
}
|
|
621
691
|
afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
|
|
622
|
-
|
|
692
|
+
_g.label = 12;
|
|
623
693
|
case 12:
|
|
624
|
-
|
|
694
|
+
_g.trys.push([12, 14, , 15]);
|
|
625
695
|
return [4 /*yield*/, this.eventManager.fire('afterStore', {
|
|
626
696
|
controller: this,
|
|
627
697
|
request: params,
|
|
628
698
|
response: response,
|
|
629
699
|
})];
|
|
630
700
|
case 13:
|
|
631
|
-
|
|
701
|
+
_g.sent();
|
|
632
702
|
return [3 /*break*/, 15];
|
|
633
703
|
case 14:
|
|
634
|
-
err_5 =
|
|
704
|
+
err_5 = _g.sent();
|
|
635
705
|
if ((err_5 === null || err_5 === void 0 ? void 0 : err_5.message) == 'cancelled') {
|
|
636
706
|
this.log.warn("'afterStore' middleware cancelled");
|
|
637
707
|
afterStoreProfile.stop();
|
|
@@ -647,7 +717,7 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
647
717
|
this.log.profile(afterStoreProfile);
|
|
648
718
|
return [3 /*break*/, 18];
|
|
649
719
|
case 16:
|
|
650
|
-
err_6 =
|
|
720
|
+
err_6 = _g.sent();
|
|
651
721
|
if (err_6) {
|
|
652
722
|
if (err_6.err && err_6.fetchDetails) {
|
|
653
723
|
switch (err_6.fetchDetails.status) {
|
|
@@ -699,7 +769,11 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
699
769
|
var products;
|
|
700
770
|
var _this = this;
|
|
701
771
|
return __generator(this, function (_a) {
|
|
702
|
-
products = typeof _products.slice == 'function' ? _products.slice() : [_products];
|
|
772
|
+
products = typeof (_products === null || _products === void 0 ? void 0 : _products.slice) == 'function' ? _products.slice() : [_products];
|
|
773
|
+
if (!_products || products.length === 0) {
|
|
774
|
+
this.log.warn('No products provided to autocomplete controller.addToCart');
|
|
775
|
+
return [2 /*return*/];
|
|
776
|
+
}
|
|
703
777
|
products.forEach(function (product) {
|
|
704
778
|
_this.track.product.addToCart(product);
|
|
705
779
|
});
|
|
@@ -724,24 +798,6 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
724
798
|
type: 'session',
|
|
725
799
|
key: "ss-controller-".concat(_this.config.id),
|
|
726
800
|
});
|
|
727
|
-
_this.eventManager.on('afterStore', function (search, next) { return __awaiter(_this, void 0, void 0, function () {
|
|
728
|
-
var controller, responseId, data;
|
|
729
|
-
var _a;
|
|
730
|
-
return __generator(this, function (_b) {
|
|
731
|
-
switch (_b.label) {
|
|
732
|
-
case 0: return [4 /*yield*/, next()];
|
|
733
|
-
case 1:
|
|
734
|
-
_b.sent();
|
|
735
|
-
controller = search.controller;
|
|
736
|
-
responseId = search.response.tracking.responseId;
|
|
737
|
-
if (controller.store.loaded && !controller.store.error) {
|
|
738
|
-
data = { responseId: responseId };
|
|
739
|
-
this.tracker.events.autocomplete.render({ data: data, siteId: (_a = this.config.globals) === null || _a === void 0 ? void 0 : _a.siteId });
|
|
740
|
-
}
|
|
741
|
-
return [2 /*return*/];
|
|
742
|
-
}
|
|
743
|
-
});
|
|
744
|
-
}); });
|
|
745
801
|
// add 'afterSearch' middleware
|
|
746
802
|
_this.eventManager.on('afterSearch', function (ac, next) { return __awaiter(_this, void 0, void 0, function () {
|
|
747
803
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FinderController.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAwB,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"FinderController.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAwB,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAoBnH,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;gBAGtC,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;IA+B3B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA6BhC;IAED,IAAI,QAAa,QAAQ,IAAI,CAAC,CAkB5B;IAEF,KAAK,QAAO,IAAI,CAId;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAoI9B;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAW3C,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAW3C,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGrG,KAAK,0BAA0B,GAAG;IACjC,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,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;KACrC,CAAC;CACF,CAAC;AAaF,qBAAa,wBAAyB,SAAQ,kBAAkB;IACxD,IAAI,kBAAkC;IACrC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,8BAA8B,CAAC;IAE/C,OAAO,CAAC,MAAM,CAUP;gBAGN,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;IAwC3B,KAAK,EAAE,0BAA0B,CA0I/B;IAEF,IAAI,MAAM,IAAI,qBAAqB,CA4BlC;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAgI9B;IAEF,SAAS,cAAqB,OAAO,EAAE,GAAG,OAAO,KAAG,QAAQ,IAAI,CAAC,CAY/D;CACF"}
|