@searchspring/snap-controller 0.65.1 → 0.65.2
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.map +1 -1
- package/dist/cjs/Autocomplete/AutocompleteController.js +49 -11
- package/dist/cjs/Recommendation/RecommendationController.d.ts.map +1 -1
- package/dist/cjs/Recommendation/RecommendationController.js +42 -2
- package/dist/cjs/Search/SearchController.d.ts.map +1 -1
- package/dist/cjs/Search/SearchController.js +49 -11
- package/dist/esm/Autocomplete/AutocompleteController.d.ts.map +1 -1
- package/dist/esm/Autocomplete/AutocompleteController.js +38 -8
- package/dist/esm/Recommendation/RecommendationController.d.ts.map +1 -1
- package/dist/esm/Recommendation/RecommendationController.js +31 -2
- package/dist/esm/Search/SearchController.d.ts.map +1 -1
- package/dist/esm/Search/SearchController.js +39 -9
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAa,OAAO,
|
|
1
|
+
{"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAa,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACzF,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,EAAiC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAElI,OAAO,KAAK,EAAE,wBAAwB,EAAgE,MAAM,2BAA2B,CAAC;AAaxI,eAAO,MAAM,WAAW,MAAM,CAAC;AA+B/B,KAAK,wBAAwB,GAAG;IAC/B,OAAO,EAAE;QACR,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACvD,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QACzD,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QAClC,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACtC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;KACtC,CAAC;IACF,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,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,MAAM,EAAE;QACP,OAAO,EAAE,MAAM,CACd,MAAM,EACN;YACC,YAAY,CAAC,EAAE,OAAO,CAAC;YACvB,UAAU,CAAC,EAAE,OAAO,CAAC;YACrB,MAAM,CAAC,EAAE,OAAO,CAAC;SACjB,CACD,CAAC;KACF,CAEC;gBAGD,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;IA0E3B,KAAK,EAAE,wBAAwB,CAqD7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CAwCrC;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;wBAkDpD,aAAa,KAAG,IAAI;uBAMrB,UAAU,KAAG,IAAI;4BAQN,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,QAAQ,IAAI,CAAC;mCAgDhD,MAAM,WAAW,CAAC,gBAAgB,CAAC,KAAG,IAAI;uBAqBtD,KAAK;;;;uBAyDL,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,CA6I9B;IAEF,SAAS,YAAmB,OAAO,KAAG,QAAQ,IAAI,CAAC,CAGjD;CACF"}
|
|
@@ -141,7 +141,7 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
141
141
|
var _a, _b;
|
|
142
142
|
if ((_a = _this.events.product[result.id]) === null || _a === void 0 ? void 0 : _a.render)
|
|
143
143
|
return;
|
|
144
|
-
var data = getAutocompleteSchemaData({ params: _this.params, store: _this.store, results: [result] });
|
|
144
|
+
var data = getAutocompleteSchemaData({ params: _this.params, store: _this.store, results: result ? [result] : [] });
|
|
145
145
|
_this.tracker.events.autocomplete.render({ data: data, siteId: (_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId });
|
|
146
146
|
_this.events.product[result.id] = _this.events.product[result.id] || {};
|
|
147
147
|
_this.events.product[result.id].render = true;
|
|
@@ -159,7 +159,7 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
159
159
|
},
|
|
160
160
|
addToCart: function (result) {
|
|
161
161
|
var _a;
|
|
162
|
-
var data =
|
|
162
|
+
var data = getAutocompleteAddtocartSchemaData({ params: _this.params, store: _this.store, results: [result] });
|
|
163
163
|
_this.tracker.events.autocomplete.addToCart({ data: data, siteId: (_a = _this.config.globals) === null || _a === void 0 ? void 0 : _a.siteId });
|
|
164
164
|
_this.eventManager.fire('track.product.addToCart', { controller: _this, products: [result], trackEvent: data });
|
|
165
165
|
},
|
|
@@ -617,6 +617,31 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
617
617
|
type: 'session',
|
|
618
618
|
key: "ss-controller-".concat(_this.config.id),
|
|
619
619
|
});
|
|
620
|
+
_this.eventManager.on('afterStore', function (search, next) { return __awaiter(_this, void 0, void 0, function () {
|
|
621
|
+
var controller, products, results, data;
|
|
622
|
+
var _this = this;
|
|
623
|
+
var _a;
|
|
624
|
+
return __generator(this, function (_b) {
|
|
625
|
+
switch (_b.label) {
|
|
626
|
+
case 0: return [4 /*yield*/, next()];
|
|
627
|
+
case 1:
|
|
628
|
+
_b.sent();
|
|
629
|
+
controller = search.controller;
|
|
630
|
+
if (controller.store.loaded && !controller.store.error) {
|
|
631
|
+
products = controller.store.results.filter(function (result) { return result.type === 'product'; });
|
|
632
|
+
results = products.length === 0 ? [] : products;
|
|
633
|
+
data = getAutocompleteSchemaData({ params: this.params, store: this.store, results: results });
|
|
634
|
+
this.tracker.events.autocomplete.render({ data: data, siteId: (_a = this.config.globals) === null || _a === void 0 ? void 0 : _a.siteId });
|
|
635
|
+
products.forEach(function (result) {
|
|
636
|
+
_this.events.product[result.id] = _this.events.product[result.id] || {};
|
|
637
|
+
_this.events.product[result.id].render = true;
|
|
638
|
+
});
|
|
639
|
+
this.eventManager.fire('track.product.render', { controller: this, products: products, trackEvent: data });
|
|
640
|
+
}
|
|
641
|
+
return [2 /*return*/];
|
|
642
|
+
}
|
|
643
|
+
});
|
|
644
|
+
}); });
|
|
620
645
|
// add 'afterSearch' middleware
|
|
621
646
|
_this.eventManager.on('afterSearch', function (ac, next) { return __awaiter(_this, void 0, void 0, function () {
|
|
622
647
|
return __generator(this, function (_a) {
|
|
@@ -914,8 +939,21 @@ function getAutocompleteRedirectSchemaData(_a) {
|
|
|
914
939
|
redirect: redirectURL,
|
|
915
940
|
};
|
|
916
941
|
}
|
|
942
|
+
function getAutocompleteAddtocartSchemaData(_a) {
|
|
943
|
+
var params = _a.params, store = _a.store, results = _a.results;
|
|
944
|
+
var base = getAutocompleteSchemaData({ params: params, store: store, results: results });
|
|
945
|
+
return __assign(__assign({}, base), { results: (results === null || results === void 0 ? void 0 : results.map(function (result) {
|
|
946
|
+
var core = result.mappings.core;
|
|
947
|
+
return {
|
|
948
|
+
uid: core.uid || '',
|
|
949
|
+
sku: core.sku,
|
|
950
|
+
price: Number(core.price),
|
|
951
|
+
qty: result.quantity || 1,
|
|
952
|
+
};
|
|
953
|
+
})) || [] });
|
|
954
|
+
}
|
|
917
955
|
function getAutocompleteSchemaData(_a) {
|
|
918
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o
|
|
956
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
919
957
|
var params = _a.params, store = _a.store, results = _a.results;
|
|
920
958
|
var filters = (_b = params.filters) === null || _b === void 0 ? void 0 : _b.reduce(function (acc, filter) {
|
|
921
959
|
var _a;
|
|
@@ -939,20 +977,20 @@ function getAutocompleteSchemaData(_a) {
|
|
|
939
977
|
}
|
|
940
978
|
return acc;
|
|
941
979
|
}, {});
|
|
942
|
-
return __assign(__assign({ q: ((_d = (_c = store.search) === null || _c === void 0 ? void 0 : _c.originalQuery) === null || _d === void 0 ? void 0 : _d.string) || ((_f = (_e = store.search) === null || _e === void 0 ? void 0 : _e.query) === null || _f === void 0 ? void 0 : _f.string) || '', correctedQuery: ((_h = (_g = store.search) === null || _g === void 0 ? void 0 : _g.originalQuery) === null || _h === void 0 ? void 0 : _h.string) ? (_k = (_j = store.search) === null || _j === void 0 ? void 0 : _j.query) === null || _k === void 0 ? void 0 : _k.string : undefined }, filters), { sort:
|
|
943
|
-
{
|
|
944
|
-
field:
|
|
945
|
-
dir:
|
|
946
|
-
}
|
|
947
|
-
|
|
980
|
+
return __assign(__assign({ q: ((_d = (_c = store.search) === null || _c === void 0 ? void 0 : _c.originalQuery) === null || _d === void 0 ? void 0 : _d.string) || ((_f = (_e = store.search) === null || _e === void 0 ? void 0 : _e.query) === null || _f === void 0 ? void 0 : _f.string) || '', correctedQuery: ((_h = (_g = store.search) === null || _g === void 0 ? void 0 : _g.originalQuery) === null || _h === void 0 ? void 0 : _h.string) ? (_k = (_j = store.search) === null || _j === void 0 ? void 0 : _j.query) === null || _k === void 0 ? void 0 : _k.string : undefined }, filters), { sort: (_l = params.sorts) === null || _l === void 0 ? void 0 : _l.map(function (sort) {
|
|
981
|
+
return {
|
|
982
|
+
field: sort.field,
|
|
983
|
+
dir: sort.direction,
|
|
984
|
+
};
|
|
985
|
+
}), pagination: {
|
|
948
986
|
totalResults: store.pagination.totalResults,
|
|
949
987
|
page: store.pagination.page,
|
|
950
988
|
resultsPerPage: store.pagination.pageSize,
|
|
951
989
|
}, merchandising: {
|
|
952
990
|
personalized: store.merchandising.personalized,
|
|
953
991
|
redirect: store.merchandising.redirect,
|
|
954
|
-
triggeredCampaigns: (((
|
|
955
|
-
((
|
|
992
|
+
triggeredCampaigns: (((_m = store.merchandising.campaigns) === null || _m === void 0 ? void 0 : _m.length) &&
|
|
993
|
+
((_o = store.merchandising.campaigns) === null || _o === void 0 ? void 0 : _o.map(function (campaign) {
|
|
956
994
|
var experiement = store.merchandising.experiments.find(function (experiment) { return experiment.campaignId === campaign.id; });
|
|
957
995
|
return {
|
|
958
996
|
id: campaign.id,
|
|
@@ -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;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,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;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,gBAAgB,EAAiB,MAAM,UAAU,CAAC;AAKpH,KAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACvD,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QAChD,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QAClC,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACtC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;KACrC,CAAC;IACF,MAAM,EAAE;QACP,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;KACxC,CAAC;CACF,CAAC;AAUF,qBAAa,wBAAyB,SAAQ,kBAAkB;IACxD,IAAI,kBAAkC;IACrC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,8BAA8B,CAAC;IAE/C,MAAM,EAAE;QACP,OAAO,EAAE,MAAM,CACd,MAAM,EACN;YACC,YAAY,CAAC,EAAE,OAAO,CAAC;YACvB,UAAU,CAAC,EAAE,OAAO,CAAC;YACrB,MAAM,CAAC,EAAE,OAAO,CAAC;SACjB,CACD,CAAC;KACF,CAEC;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;IAwD3B,KAAK,EAAE,0BAA0B,CAyD/B;IAEF,IAAI,MAAM,IAAI,qBAAqB,CA4BlC;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA6H9B;CACF"}
|
|
@@ -134,7 +134,7 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
134
134
|
},
|
|
135
135
|
addToCart: function (result) {
|
|
136
136
|
var _a;
|
|
137
|
-
var data =
|
|
137
|
+
var data = getRecommendationsAddtocartSchemaData({ store: _this.store, results: [result] });
|
|
138
138
|
_this.tracker.events.recommendations.addToCart({ data: data, siteId: (_a = _this.config.globals) === null || _a === void 0 ? void 0 : _a.siteId });
|
|
139
139
|
_this.eventManager.fire('track.product.addToCart', { controller: _this, products: [result], trackEvent: data });
|
|
140
140
|
return data;
|
|
@@ -145,7 +145,7 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
145
145
|
var _a;
|
|
146
146
|
if (_this.store.profile.type != 'bundle')
|
|
147
147
|
return;
|
|
148
|
-
var data =
|
|
148
|
+
var data = getRecommendationsAddtocartSchemaData({ store: _this.store, results: results });
|
|
149
149
|
_this.tracker.events.recommendations.addToCart({ data: data, siteId: (_a = _this.config.globals) === null || _a === void 0 ? void 0 : _a.siteId });
|
|
150
150
|
_this.eventManager.fire('track.bundle.addToCart', { controller: _this, products: results, trackEvent: data });
|
|
151
151
|
return data;
|
|
@@ -317,6 +317,31 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
317
317
|
// deep merge config with defaults
|
|
318
318
|
_this.config = (0, deepmerge_1.default)(defaultConfig, _this.config);
|
|
319
319
|
_this.store.setConfig(_this.config);
|
|
320
|
+
_this.eventManager.on('afterStore', function (search, next) { return __awaiter(_this, void 0, void 0, function () {
|
|
321
|
+
var controller, products, results, data;
|
|
322
|
+
var _this = this;
|
|
323
|
+
var _a;
|
|
324
|
+
return __generator(this, function (_b) {
|
|
325
|
+
switch (_b.label) {
|
|
326
|
+
case 0: return [4 /*yield*/, next()];
|
|
327
|
+
case 1:
|
|
328
|
+
_b.sent();
|
|
329
|
+
controller = search.controller;
|
|
330
|
+
if (controller.store.loaded && !controller.store.error) {
|
|
331
|
+
products = controller.store.results.filter(function (result) { return result.type === 'product'; });
|
|
332
|
+
results = products.length === 0 ? [] : products;
|
|
333
|
+
data = getRecommendationsSchemaData({ store: this.store, results: results });
|
|
334
|
+
this.tracker.events.recommendations.render({ data: data, siteId: (_a = this.config.globals) === null || _a === void 0 ? void 0 : _a.siteId });
|
|
335
|
+
products.forEach(function (result) {
|
|
336
|
+
_this.events.product[result.id] = _this.events.product[result.id] || {};
|
|
337
|
+
_this.events.product[result.id].render = true;
|
|
338
|
+
});
|
|
339
|
+
this.eventManager.fire('track.product.render', { controller: this, products: products, trackEvent: data });
|
|
340
|
+
}
|
|
341
|
+
return [2 /*return*/];
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
}); });
|
|
320
345
|
// add 'afterStore' middleware
|
|
321
346
|
// this.eventManager.on('afterStore', async (recommend: AfterStoreObj, next: Next): Promise<void | boolean> => {
|
|
322
347
|
// await next();
|
|
@@ -357,6 +382,21 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
357
382
|
return RecommendationController;
|
|
358
383
|
}(AbstractController_1.AbstractController));
|
|
359
384
|
exports.RecommendationController = RecommendationController;
|
|
385
|
+
function getRecommendationsAddtocartSchemaData(_a) {
|
|
386
|
+
var store = _a.store, results = _a.results;
|
|
387
|
+
return {
|
|
388
|
+
tag: store.profile.tag,
|
|
389
|
+
results: (results === null || results === void 0 ? void 0 : results.map(function (result) {
|
|
390
|
+
var core = result.mappings.core;
|
|
391
|
+
return {
|
|
392
|
+
uid: core.uid || '',
|
|
393
|
+
sku: core.sku,
|
|
394
|
+
price: Number(core.price),
|
|
395
|
+
qty: result.quantity || 1,
|
|
396
|
+
};
|
|
397
|
+
})) || [],
|
|
398
|
+
};
|
|
399
|
+
}
|
|
360
400
|
function getRecommendationsSchemaData(_a) {
|
|
361
401
|
var store = _a.store, results = _a.results;
|
|
362
402
|
return {
|
|
@@ -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,OAAO,EAAE,MAAM,EAAE,WAAW,
|
|
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,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,KAAK,EACX,sBAAsB,EAGtB,kBAAkB,EAClB,gBAAgB,EAIhB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EACX,kBAAkB,EAOlB,MAAM,2BAA2B,CAAC;AAgCnC,KAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACvD,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QACzD,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QAClC,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACtC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;KACtC,CAAC;IACF,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,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;IAC/D,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,MAAM,CASM;gBAGnB,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;IAqN3B,KAAK,EAAE,kBAAkB,CA0FvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CA8C/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAuN9B;IAEF,SAAS,YAAmB,OAAO,KAAG,QAAQ,IAAI,CAAC,CAGjD;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"}
|
|
@@ -167,7 +167,7 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
167
167
|
if ((_a = _this.events.product[result.id]) === null || _a === void 0 ? void 0 : _a.render) {
|
|
168
168
|
return;
|
|
169
169
|
}
|
|
170
|
-
var data = getSearchSchemaData({ params: _this.params, store: _this.store, results: [result] });
|
|
170
|
+
var data = getSearchSchemaData({ params: _this.params, store: _this.store, results: result ? [result] : [] });
|
|
171
171
|
_this.tracker.events[_this.pageType].render({ data: data, siteId: (_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId });
|
|
172
172
|
_this.events.product[result.id] = _this.events.product[result.id] || {};
|
|
173
173
|
_this.events.product[result.id].render = true;
|
|
@@ -186,7 +186,7 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
186
186
|
},
|
|
187
187
|
addToCart: function (result) {
|
|
188
188
|
var _a;
|
|
189
|
-
var data =
|
|
189
|
+
var data = getSearchAddtocartSchemaData({ params: _this.params, store: _this.store, results: [result] });
|
|
190
190
|
_this.tracker.events[_this.pageType].addToCart({
|
|
191
191
|
data: data,
|
|
192
192
|
siteId: (_a = _this.config.globals) === null || _a === void 0 ? void 0 : _a.siteId,
|
|
@@ -553,6 +553,31 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
553
553
|
}
|
|
554
554
|
});
|
|
555
555
|
}); });
|
|
556
|
+
_this.eventManager.on('afterStore', function (search, next) { return __awaiter(_this, void 0, void 0, function () {
|
|
557
|
+
var controller, products, results, data;
|
|
558
|
+
var _this = this;
|
|
559
|
+
var _a;
|
|
560
|
+
return __generator(this, function (_b) {
|
|
561
|
+
switch (_b.label) {
|
|
562
|
+
case 0: return [4 /*yield*/, next()];
|
|
563
|
+
case 1:
|
|
564
|
+
_b.sent();
|
|
565
|
+
controller = search.controller;
|
|
566
|
+
if (controller.store.loaded && !controller.store.error) {
|
|
567
|
+
products = controller.store.results.filter(function (result) { var _a; return result.type === 'product' && !((_a = _this.events.product[result.id]) === null || _a === void 0 ? void 0 : _a.render); });
|
|
568
|
+
results = products.length === 0 ? [] : products;
|
|
569
|
+
data = getSearchSchemaData({ params: this.params, store: this.store, results: results });
|
|
570
|
+
this.tracker.events[this.pageType].render({ data: data, siteId: (_a = this.config.globals) === null || _a === void 0 ? void 0 : _a.siteId });
|
|
571
|
+
products.forEach(function (result) {
|
|
572
|
+
_this.events.product[result.id] = _this.events.product[result.id] || {};
|
|
573
|
+
_this.events.product[result.id].render = true;
|
|
574
|
+
});
|
|
575
|
+
this.eventManager.fire('track.product.render', { controller: this, products: products, trackEvent: data });
|
|
576
|
+
}
|
|
577
|
+
return [2 /*return*/];
|
|
578
|
+
}
|
|
579
|
+
});
|
|
580
|
+
}); });
|
|
556
581
|
// restore position
|
|
557
582
|
if ((_d = (_c = _this.config.settings) === null || _c === void 0 ? void 0 : _c.restorePosition) === null || _d === void 0 ? void 0 : _d.enabled) {
|
|
558
583
|
_this.eventManager.on('restorePosition', function (_a, next) {
|
|
@@ -755,8 +780,21 @@ function getSearchRedirectSchemaData(_a) {
|
|
|
755
780
|
redirect: redirectURL,
|
|
756
781
|
};
|
|
757
782
|
}
|
|
783
|
+
function getSearchAddtocartSchemaData(_a) {
|
|
784
|
+
var params = _a.params, store = _a.store, results = _a.results;
|
|
785
|
+
var base = getSearchSchemaData({ params: params, store: store, results: results });
|
|
786
|
+
return __assign(__assign({}, base), { results: (results === null || results === void 0 ? void 0 : results.map(function (result) {
|
|
787
|
+
var core = result.mappings.core;
|
|
788
|
+
return {
|
|
789
|
+
uid: core.uid || '',
|
|
790
|
+
sku: core.sku,
|
|
791
|
+
price: Number(core.price),
|
|
792
|
+
qty: result.quantity || 1,
|
|
793
|
+
};
|
|
794
|
+
})) || [] });
|
|
795
|
+
}
|
|
758
796
|
function getSearchSchemaData(_a) {
|
|
759
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l
|
|
797
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
760
798
|
var params = _a.params, store = _a.store, results = _a.results;
|
|
761
799
|
var filters = (_b = params.filters) === null || _b === void 0 ? void 0 : _b.reduce(function (acc, filter) {
|
|
762
800
|
var _a;
|
|
@@ -780,20 +818,20 @@ function getSearchSchemaData(_a) {
|
|
|
780
818
|
}
|
|
781
819
|
return acc;
|
|
782
820
|
}, {});
|
|
783
|
-
return __assign(__assign({ q: ((_d = (_c = params.search) === null || _c === void 0 ? void 0 : _c.query) === null || _d === void 0 ? void 0 : _d.string) || '', correctedQuery: ((_f = (_e = store.search) === null || _e === void 0 ? void 0 : _e.originalQuery) === null || _f === void 0 ? void 0 : _f.string) ? (_h = (_g = store.search) === null || _g === void 0 ? void 0 : _g.query) === null || _h === void 0 ? void 0 : _h.string : undefined }, filters), { sort:
|
|
784
|
-
{
|
|
785
|
-
field:
|
|
786
|
-
dir:
|
|
787
|
-
}
|
|
788
|
-
|
|
821
|
+
return __assign(__assign({ q: ((_d = (_c = params.search) === null || _c === void 0 ? void 0 : _c.query) === null || _d === void 0 ? void 0 : _d.string) || '', correctedQuery: ((_f = (_e = store.search) === null || _e === void 0 ? void 0 : _e.originalQuery) === null || _f === void 0 ? void 0 : _f.string) ? (_h = (_g = store.search) === null || _g === void 0 ? void 0 : _g.query) === null || _h === void 0 ? void 0 : _h.string : undefined }, filters), { sort: (_j = params.sorts) === null || _j === void 0 ? void 0 : _j.map(function (sort) {
|
|
822
|
+
return {
|
|
823
|
+
field: sort.field,
|
|
824
|
+
dir: sort.direction,
|
|
825
|
+
};
|
|
826
|
+
}), pagination: {
|
|
789
827
|
totalResults: store.pagination.totalResults,
|
|
790
828
|
page: store.pagination.page,
|
|
791
829
|
resultsPerPage: store.pagination.pageSize,
|
|
792
830
|
}, merchandising: {
|
|
793
831
|
personalized: store.merchandising.personalized,
|
|
794
832
|
redirect: store.merchandising.redirect,
|
|
795
|
-
triggeredCampaigns: (((
|
|
796
|
-
((
|
|
833
|
+
triggeredCampaigns: (((_k = store.merchandising.campaigns) === null || _k === void 0 ? void 0 : _k.length) &&
|
|
834
|
+
((_l = store.merchandising.campaigns) === null || _l === void 0 ? void 0 : _l.map(function (campaign) {
|
|
797
835
|
var experiement = store.merchandising.experiments.find(function (experiment) { return experiment.campaignId === campaign.id; });
|
|
798
836
|
return {
|
|
799
837
|
id: campaign.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAa,OAAO,
|
|
1
|
+
{"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAa,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACzF,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,EAAiC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAElI,OAAO,KAAK,EAAE,wBAAwB,EAAgE,MAAM,2BAA2B,CAAC;AAaxI,eAAO,MAAM,WAAW,MAAM,CAAC;AA+B/B,KAAK,wBAAwB,GAAG;IAC/B,OAAO,EAAE;QACR,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACvD,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QACzD,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QAClC,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACtC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;KACtC,CAAC;IACF,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,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,MAAM,EAAE;QACP,OAAO,EAAE,MAAM,CACd,MAAM,EACN;YACC,YAAY,CAAC,EAAE,OAAO,CAAC;YACvB,UAAU,CAAC,EAAE,OAAO,CAAC;YACrB,MAAM,CAAC,EAAE,OAAO,CAAC;SACjB,CACD,CAAC;KACF,CAEC;gBAGD,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;IA0E3B,KAAK,EAAE,wBAAwB,CAqD7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CAwCrC;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;wBAkDpD,aAAa,KAAG,IAAI;uBAMrB,UAAU,KAAG,IAAI;4BAQN,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,QAAQ,IAAI,CAAC;mCAgDhD,MAAM,WAAW,CAAC,gBAAgB,CAAC,KAAG,IAAI;uBAqBtD,KAAK;;;;uBAyDL,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,CA6I9B;IAEF,SAAS,YAAmB,OAAO,KAAG,QAAQ,IAAI,CAAC,CAGjD;CACF"}
|
|
@@ -68,7 +68,7 @@ export class AutocompleteController extends AbstractController {
|
|
|
68
68
|
render: (result) => {
|
|
69
69
|
if (this.events.product[result.id]?.render)
|
|
70
70
|
return;
|
|
71
|
-
const data = getAutocompleteSchemaData({ params: this.params, store: this.store, results: [result] });
|
|
71
|
+
const data = getAutocompleteSchemaData({ params: this.params, store: this.store, results: result ? [result] : [] });
|
|
72
72
|
this.tracker.events.autocomplete.render({ data, siteId: this.config.globals?.siteId });
|
|
73
73
|
this.events.product[result.id] = this.events.product[result.id] || {};
|
|
74
74
|
this.events.product[result.id].render = true;
|
|
@@ -84,7 +84,7 @@ export class AutocompleteController extends AbstractController {
|
|
|
84
84
|
this.eventManager.fire('track.product.impression', { controller: this, products: [result], trackEvent: data });
|
|
85
85
|
},
|
|
86
86
|
addToCart: (result) => {
|
|
87
|
-
const data =
|
|
87
|
+
const data = getAutocompleteAddtocartSchemaData({ params: this.params, store: this.store, results: [result] });
|
|
88
88
|
this.tracker.events.autocomplete.addToCart({ data, siteId: this.config.globals?.siteId });
|
|
89
89
|
this.eventManager.fire('track.product.addToCart', { controller: this, products: [result], trackEvent: data });
|
|
90
90
|
},
|
|
@@ -453,6 +453,21 @@ export class AutocompleteController extends AbstractController {
|
|
|
453
453
|
type: 'session',
|
|
454
454
|
key: `ss-controller-${this.config.id}`,
|
|
455
455
|
});
|
|
456
|
+
this.eventManager.on('afterStore', async (search, next) => {
|
|
457
|
+
await next();
|
|
458
|
+
const controller = search.controller;
|
|
459
|
+
if (controller.store.loaded && !controller.store.error) {
|
|
460
|
+
const products = controller.store.results.filter((result) => result.type === 'product');
|
|
461
|
+
const results = products.length === 0 ? [] : products;
|
|
462
|
+
const data = getAutocompleteSchemaData({ params: this.params, store: this.store, results });
|
|
463
|
+
this.tracker.events.autocomplete.render({ data, siteId: this.config.globals?.siteId });
|
|
464
|
+
products.forEach((result) => {
|
|
465
|
+
this.events.product[result.id] = this.events.product[result.id] || {};
|
|
466
|
+
this.events.product[result.id].render = true;
|
|
467
|
+
});
|
|
468
|
+
this.eventManager.fire('track.product.render', { controller: this, products, trackEvent: data });
|
|
469
|
+
}
|
|
470
|
+
});
|
|
456
471
|
// add 'afterSearch' middleware
|
|
457
472
|
this.eventManager.on('afterSearch', async (ac, next) => {
|
|
458
473
|
await next();
|
|
@@ -692,6 +707,21 @@ function getAutocompleteRedirectSchemaData({ redirectURL }) {
|
|
|
692
707
|
redirect: redirectURL,
|
|
693
708
|
};
|
|
694
709
|
}
|
|
710
|
+
function getAutocompleteAddtocartSchemaData({ params, store, results, }) {
|
|
711
|
+
const base = getAutocompleteSchemaData({ params, store, results });
|
|
712
|
+
return {
|
|
713
|
+
...base,
|
|
714
|
+
results: results?.map((result) => {
|
|
715
|
+
const core = result.mappings.core;
|
|
716
|
+
return {
|
|
717
|
+
uid: core.uid || '',
|
|
718
|
+
sku: core.sku,
|
|
719
|
+
price: Number(core.price),
|
|
720
|
+
qty: result.quantity || 1,
|
|
721
|
+
};
|
|
722
|
+
}) || [],
|
|
723
|
+
};
|
|
724
|
+
}
|
|
695
725
|
function getAutocompleteSchemaData({ params, store, results, }) {
|
|
696
726
|
const filters = params.filters?.reduce((acc, filter) => {
|
|
697
727
|
const key = filter.background ? 'bgfilter' : 'filter';
|
|
@@ -717,12 +747,12 @@ function getAutocompleteSchemaData({ params, store, results, }) {
|
|
|
717
747
|
q: store.search?.originalQuery?.string || store.search?.query?.string || '',
|
|
718
748
|
correctedQuery: store.search?.originalQuery?.string ? store.search?.query?.string : undefined,
|
|
719
749
|
...filters,
|
|
720
|
-
sort:
|
|
721
|
-
{
|
|
722
|
-
field:
|
|
723
|
-
dir:
|
|
724
|
-
}
|
|
725
|
-
|
|
750
|
+
sort: params.sorts?.map((sort) => {
|
|
751
|
+
return {
|
|
752
|
+
field: sort.field,
|
|
753
|
+
dir: sort.direction,
|
|
754
|
+
};
|
|
755
|
+
}),
|
|
726
756
|
pagination: {
|
|
727
757
|
totalResults: store.pagination.totalResults,
|
|
728
758
|
page: store.pagination.page,
|
|
@@ -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;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,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;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,gBAAgB,EAAiB,MAAM,UAAU,CAAC;AAKpH,KAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACvD,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QAChD,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QAClC,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACtC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;KACrC,CAAC;IACF,MAAM,EAAE;QACP,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;KACxC,CAAC;CACF,CAAC;AAUF,qBAAa,wBAAyB,SAAQ,kBAAkB;IACxD,IAAI,kBAAkC;IACrC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,8BAA8B,CAAC;IAE/C,MAAM,EAAE;QACP,OAAO,EAAE,MAAM,CACd,MAAM,EACN;YACC,YAAY,CAAC,EAAE,OAAO,CAAC;YACvB,UAAU,CAAC,EAAE,OAAO,CAAC;YACrB,MAAM,CAAC,EAAE,OAAO,CAAC;SACjB,CACD,CAAC;KACF,CAEC;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;IAwD3B,KAAK,EAAE,0BAA0B,CAyD/B;IAEF,IAAI,MAAM,IAAI,qBAAqB,CA4BlC;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA6H9B;CACF"}
|
|
@@ -58,7 +58,7 @@ export class RecommendationController extends AbstractController {
|
|
|
58
58
|
return data;
|
|
59
59
|
},
|
|
60
60
|
addToCart: (result) => {
|
|
61
|
-
const data =
|
|
61
|
+
const data = getRecommendationsAddtocartSchemaData({ store: this.store, results: [result] });
|
|
62
62
|
this.tracker.events.recommendations.addToCart({ data, siteId: this.config.globals?.siteId });
|
|
63
63
|
this.eventManager.fire('track.product.addToCart', { controller: this, products: [result], trackEvent: data });
|
|
64
64
|
return data;
|
|
@@ -68,7 +68,7 @@ export class RecommendationController extends AbstractController {
|
|
|
68
68
|
addToCart: (results) => {
|
|
69
69
|
if (this.store.profile.type != 'bundle')
|
|
70
70
|
return;
|
|
71
|
-
const data =
|
|
71
|
+
const data = getRecommendationsAddtocartSchemaData({ store: this.store, results });
|
|
72
72
|
this.tracker.events.recommendations.addToCart({ data, siteId: this.config.globals?.siteId });
|
|
73
73
|
this.eventManager.fire('track.bundle.addToCart', { controller: this, products: results, trackEvent: data });
|
|
74
74
|
return data;
|
|
@@ -209,6 +209,21 @@ export class RecommendationController extends AbstractController {
|
|
|
209
209
|
// deep merge config with defaults
|
|
210
210
|
this.config = deepmerge(defaultConfig, this.config);
|
|
211
211
|
this.store.setConfig(this.config);
|
|
212
|
+
this.eventManager.on('afterStore', async (search, next) => {
|
|
213
|
+
await next();
|
|
214
|
+
const controller = search.controller;
|
|
215
|
+
if (controller.store.loaded && !controller.store.error) {
|
|
216
|
+
const products = controller.store.results.filter((result) => result.type === 'product');
|
|
217
|
+
const results = products.length === 0 ? [] : products;
|
|
218
|
+
const data = getRecommendationsSchemaData({ store: this.store, results });
|
|
219
|
+
this.tracker.events.recommendations.render({ data, siteId: this.config.globals?.siteId });
|
|
220
|
+
products.forEach((result) => {
|
|
221
|
+
this.events.product[result.id] = this.events.product[result.id] || {};
|
|
222
|
+
this.events.product[result.id].render = true;
|
|
223
|
+
});
|
|
224
|
+
this.eventManager.fire('track.product.render', { controller: this, products, trackEvent: data });
|
|
225
|
+
}
|
|
226
|
+
});
|
|
212
227
|
// add 'afterStore' middleware
|
|
213
228
|
// this.eventManager.on('afterStore', async (recommend: AfterStoreObj, next: Next): Promise<void | boolean> => {
|
|
214
229
|
// await next();
|
|
@@ -248,6 +263,20 @@ export class RecommendationController extends AbstractController {
|
|
|
248
263
|
return params;
|
|
249
264
|
}
|
|
250
265
|
}
|
|
266
|
+
function getRecommendationsAddtocartSchemaData({ store, results, }) {
|
|
267
|
+
return {
|
|
268
|
+
tag: store.profile.tag,
|
|
269
|
+
results: results?.map((result) => {
|
|
270
|
+
const core = result.mappings.core;
|
|
271
|
+
return {
|
|
272
|
+
uid: core.uid || '',
|
|
273
|
+
sku: core.sku,
|
|
274
|
+
price: Number(core.price),
|
|
275
|
+
qty: result.quantity || 1,
|
|
276
|
+
};
|
|
277
|
+
}) || [],
|
|
278
|
+
};
|
|
279
|
+
}
|
|
251
280
|
function getRecommendationsSchemaData({ store, results }) {
|
|
252
281
|
return {
|
|
253
282
|
tag: store.profile.tag,
|
|
@@ -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,OAAO,EAAE,MAAM,EAAE,WAAW,
|
|
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,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,KAAK,EACX,sBAAsB,EAGtB,kBAAkB,EAClB,gBAAgB,EAIhB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EACX,kBAAkB,EAOlB,MAAM,2BAA2B,CAAC;AAgCnC,KAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACvD,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QACzD,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QAClC,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACtC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;KACtC,CAAC;IACF,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,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;IAC/D,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,MAAM,CASM;gBAGnB,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;IAqN3B,KAAK,EAAE,kBAAkB,CA0FvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CA8C/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAuN9B;IAEF,SAAS,YAAmB,OAAO,KAAG,QAAQ,IAAI,CAAC,CAGjD;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"}
|
|
@@ -84,7 +84,7 @@ export class SearchController extends AbstractController {
|
|
|
84
84
|
if (this.events.product[result.id]?.render) {
|
|
85
85
|
return;
|
|
86
86
|
}
|
|
87
|
-
const data = getSearchSchemaData({ params: this.params, store: this.store, results: [result] });
|
|
87
|
+
const data = getSearchSchemaData({ params: this.params, store: this.store, results: result ? [result] : [] });
|
|
88
88
|
this.tracker.events[this.pageType].render({ data, siteId: this.config.globals?.siteId });
|
|
89
89
|
this.events.product[result.id] = this.events.product[result.id] || {};
|
|
90
90
|
this.events.product[result.id].render = true;
|
|
@@ -101,7 +101,7 @@ export class SearchController extends AbstractController {
|
|
|
101
101
|
this.eventManager.fire('track.product.impression', { controller: this, products: [result], trackEvent: data });
|
|
102
102
|
},
|
|
103
103
|
addToCart: (result) => {
|
|
104
|
-
const data =
|
|
104
|
+
const data = getSearchAddtocartSchemaData({ params: this.params, store: this.store, results: [result] });
|
|
105
105
|
this.tracker.events[this.pageType].addToCart({
|
|
106
106
|
data,
|
|
107
107
|
siteId: this.config.globals?.siteId,
|
|
@@ -400,6 +400,21 @@ export class SearchController extends AbstractController {
|
|
|
400
400
|
// not awaiting this event as it relies on render, and render is blocked by afterStore event
|
|
401
401
|
this.eventManager.fire('restorePosition', { controller: this, element: elementPosition });
|
|
402
402
|
});
|
|
403
|
+
this.eventManager.on('afterStore', async (search, next) => {
|
|
404
|
+
await next();
|
|
405
|
+
const controller = search.controller;
|
|
406
|
+
if (controller.store.loaded && !controller.store.error) {
|
|
407
|
+
const products = controller.store.results.filter((result) => result.type === 'product' && !this.events.product[result.id]?.render);
|
|
408
|
+
const results = products.length === 0 ? [] : products;
|
|
409
|
+
const data = getSearchSchemaData({ params: this.params, store: this.store, results });
|
|
410
|
+
this.tracker.events[this.pageType].render({ data, siteId: this.config.globals?.siteId });
|
|
411
|
+
products.forEach((result) => {
|
|
412
|
+
this.events.product[result.id] = this.events.product[result.id] || {};
|
|
413
|
+
this.events.product[result.id].render = true;
|
|
414
|
+
});
|
|
415
|
+
this.eventManager.fire('track.product.render', { controller: this, products, trackEvent: data });
|
|
416
|
+
}
|
|
417
|
+
});
|
|
403
418
|
// restore position
|
|
404
419
|
if (this.config.settings?.restorePosition?.enabled) {
|
|
405
420
|
this.eventManager.on('restorePosition', async ({ controller, element }, next) => {
|
|
@@ -560,7 +575,22 @@ function getSearchRedirectSchemaData({ redirectURL }) {
|
|
|
560
575
|
redirect: redirectURL,
|
|
561
576
|
};
|
|
562
577
|
}
|
|
563
|
-
function
|
|
578
|
+
function getSearchAddtocartSchemaData({ params, store, results, }) {
|
|
579
|
+
const base = getSearchSchemaData({ params, store, results });
|
|
580
|
+
return {
|
|
581
|
+
...base,
|
|
582
|
+
results: results?.map((result) => {
|
|
583
|
+
const core = result.mappings.core;
|
|
584
|
+
return {
|
|
585
|
+
uid: core.uid || '',
|
|
586
|
+
sku: core.sku,
|
|
587
|
+
price: Number(core.price),
|
|
588
|
+
qty: result.quantity || 1,
|
|
589
|
+
};
|
|
590
|
+
}) || [],
|
|
591
|
+
};
|
|
592
|
+
}
|
|
593
|
+
function getSearchSchemaData({ params, store, results }) {
|
|
564
594
|
const filters = params.filters?.reduce((acc, filter) => {
|
|
565
595
|
const key = filter.background ? 'bgfilter' : 'filter';
|
|
566
596
|
acc[key] = acc[key] || [];
|
|
@@ -585,12 +615,12 @@ function getSearchSchemaData({ params, store, results, }) {
|
|
|
585
615
|
q: params.search?.query?.string || '',
|
|
586
616
|
correctedQuery: store.search?.originalQuery?.string ? store.search?.query?.string : undefined,
|
|
587
617
|
...filters,
|
|
588
|
-
sort:
|
|
589
|
-
{
|
|
590
|
-
field:
|
|
591
|
-
dir:
|
|
592
|
-
}
|
|
593
|
-
|
|
618
|
+
sort: params.sorts?.map((sort) => {
|
|
619
|
+
return {
|
|
620
|
+
field: sort.field,
|
|
621
|
+
dir: sort.direction,
|
|
622
|
+
};
|
|
623
|
+
}),
|
|
594
624
|
pagination: {
|
|
595
625
|
totalResults: store.pagination.totalResults,
|
|
596
626
|
page: store.pagination.page,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@searchspring/snap-controller",
|
|
3
|
-
"version": "0.65.
|
|
3
|
+
"version": "0.65.2",
|
|
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.65.
|
|
23
|
+
"@searchspring/snap-toolbox": "^0.65.2",
|
|
24
24
|
"css.escape": "1.5.1",
|
|
25
25
|
"deepmerge": "4.3.1"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@searchspring/snap-client": "^0.65.
|
|
29
|
-
"@searchspring/snap-event-manager": "^0.65.
|
|
30
|
-
"@searchspring/snap-logger": "^0.65.
|
|
31
|
-
"@searchspring/snap-profiler": "^0.65.
|
|
32
|
-
"@searchspring/snap-store-mobx": "^0.65.
|
|
33
|
-
"@searchspring/snap-tracker": "^0.65.
|
|
34
|
-
"@searchspring/snap-url-manager": "^0.65.
|
|
28
|
+
"@searchspring/snap-client": "^0.65.2",
|
|
29
|
+
"@searchspring/snap-event-manager": "^0.65.2",
|
|
30
|
+
"@searchspring/snap-logger": "^0.65.2",
|
|
31
|
+
"@searchspring/snap-profiler": "^0.65.2",
|
|
32
|
+
"@searchspring/snap-store-mobx": "^0.65.2",
|
|
33
|
+
"@searchspring/snap-tracker": "^0.65.2",
|
|
34
|
+
"@searchspring/snap-url-manager": "^0.65.2"
|
|
35
35
|
},
|
|
36
36
|
"sideEffects": false,
|
|
37
37
|
"files": [
|
|
38
38
|
"dist/**/*"
|
|
39
39
|
],
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "3e80b62664af7e3104e578d6c2596c439d5dfd78"
|
|
41
41
|
}
|