@searchspring/snap-controller 0.51.2 → 0.52.1
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/Abstract/AbstractController.js +1 -1
- package/dist/cjs/Autocomplete/AutocompleteController.d.ts +1 -1
- package/dist/cjs/Autocomplete/AutocompleteController.d.ts.map +1 -1
- package/dist/cjs/Autocomplete/AutocompleteController.js +1 -1
- package/dist/cjs/Finder/FinderController.js +1 -1
- package/dist/cjs/Recommendation/RecommendationController.d.ts +7 -4
- package/dist/cjs/Recommendation/RecommendationController.d.ts.map +1 -1
- package/dist/cjs/Recommendation/RecommendationController.js +123 -7
- package/dist/cjs/Search/SearchController.d.ts +1 -1
- package/dist/cjs/Search/SearchController.d.ts.map +1 -1
- package/dist/cjs/Search/SearchController.js +6 -7
- package/dist/cjs/types.d.ts +17 -17
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js +1 -1
- package/dist/esm/Abstract/AbstractController.js +3 -3
- package/dist/esm/Autocomplete/AutocompleteController.d.ts +1 -1
- package/dist/esm/Autocomplete/AutocompleteController.d.ts.map +1 -1
- package/dist/esm/Recommendation/RecommendationController.d.ts +7 -4
- package/dist/esm/Recommendation/RecommendationController.d.ts.map +1 -1
- package/dist/esm/Recommendation/RecommendationController.js +113 -3
- package/dist/esm/Search/SearchController.d.ts +1 -1
- package/dist/esm/Search/SearchController.d.ts.map +1 -1
- package/dist/esm/Search/SearchController.js +1 -1
- package/dist/esm/types.d.ts +17 -17
- package/dist/esm/types.d.ts.map +1 -1
- package/package.json +10 -10
|
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
14
14
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
15
|
function step(op) {
|
|
16
16
|
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
18
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
19
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
20
|
switch (op[0]) {
|
|
@@ -6,7 +6,7 @@ import { AutocompleteStore } from '@searchspring/snap-store-mobx';
|
|
|
6
6
|
import type { AutocompleteControllerConfig, ControllerServices, ContextVariables } from '../types';
|
|
7
7
|
import type { AutocompleteRequestModel } from '@searchspring/snapi-types';
|
|
8
8
|
export declare const INPUT_DELAY = 200;
|
|
9
|
-
|
|
9
|
+
type AutocompleteTrackMethods = {
|
|
10
10
|
product: {
|
|
11
11
|
click: (e: MouseEvent, result: any) => void;
|
|
12
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AACrF,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,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEnJ,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG1E,eAAO,MAAM,WAAW,MAAM,CAAC;AA2B/B,
|
|
1
|
+
{"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AACrF,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,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEnJ,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG1E,eAAO,MAAM,WAAW,MAAM,CAAC;AA2B/B,KAAK,wBAAwB,GAAG;IAC/B,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;KAC5C,CAAC;CACF,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,kBAAkB;IACtD,IAAI,kBAAgC;IACnC,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,4BAA4B,CAAC;IACtC,OAAO,EAAE,YAAY,CAAC;gBAG5B,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;IAsE3B,KAAK,EAAE,wBAAwB,CAO7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CA0CrC;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;;;;uBAqDL,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAgBR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6E3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAwBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAmI9B;CACF"}
|
|
@@ -40,7 +40,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
40
40
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
41
41
|
function step(op) {
|
|
42
42
|
if (f) throw new TypeError("Generator is already executing.");
|
|
43
|
-
while (_) try {
|
|
43
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
44
44
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
45
45
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
46
46
|
switch (op[0]) {
|
|
@@ -40,7 +40,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
40
40
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
41
41
|
function step(op) {
|
|
42
42
|
if (f) throw new TypeError("Generator is already executing.");
|
|
43
|
-
while (_) try {
|
|
43
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
44
44
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
45
45
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
46
46
|
switch (op[0]) {
|
|
@@ -5,13 +5,16 @@ import { ControllerTypes } from '../types';
|
|
|
5
5
|
import type { RecommendationStore } from '@searchspring/snap-store-mobx';
|
|
6
6
|
import type { RecommendCombinedRequestModel } from '@searchspring/snap-client';
|
|
7
7
|
import type { RecommendationControllerConfig, ControllerServices, ContextVariables } from '../types';
|
|
8
|
-
|
|
8
|
+
type RecommendationTrackMethods = {
|
|
9
9
|
product: {
|
|
10
|
-
click: (e: MouseEvent, result:
|
|
11
|
-
render: (result:
|
|
12
|
-
impression: (result:
|
|
10
|
+
click: (e: MouseEvent, result: Product) => BeaconEvent | undefined;
|
|
11
|
+
render: (result: Product) => BeaconEvent | undefined;
|
|
12
|
+
impression: (result: Product) => BeaconEvent | undefined;
|
|
13
|
+
removedFromBundle: (result: Product) => BeaconEvent | undefined;
|
|
14
|
+
addedToBundle: (result: Product) => BeaconEvent | undefined;
|
|
13
15
|
};
|
|
14
16
|
click: (e: MouseEvent) => BeaconEvent | undefined;
|
|
17
|
+
addBundle: (e: MouseEvent, results: Product[]) => BeaconEvent | undefined;
|
|
15
18
|
impression: () => BeaconEvent | undefined;
|
|
16
19
|
render: (results?: Product[]) => BeaconEvent | undefined;
|
|
17
20
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,KAAK,EAAE,8BAA8B,EAAkC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErI,
|
|
1
|
+
{"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,KAAK,EAAE,8BAA8B,EAAkC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErI,KAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QACnE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QACrD,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QACzD,iBAAiB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QAChE,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;KAC5D,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,WAAW,GAAG,SAAS,CAAC;IAClD,SAAS,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,GAAG,SAAS,CAAC;IAC1E,UAAU,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,WAAW,GAAG,SAAS,CAAC;CACzD,CAAC;AAUF,qBAAa,wBAAyB,SAAQ,kBAAkB;IACxD,IAAI,kBAAkC;IACrC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,8BAA8B,CAAC;IAE/C,MAAM,EAAE;QACP,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,UAAU,CAAC,EAAE,WAAW,CAAC;QACzB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,UAAU,CAAC,EAAE,WAAW,CAAC;YAAC,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,CAAC,CAAC;KAC7E,CAKC;gBAGD,MAAM,EAAE,8BAA8B,EACtC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA2C3B,KAAK,EAAE,0BAA0B,CAwS5B;IAEL,IAAI,MAAM,IAAI,6BAA6B,CA2B1C;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAuH9B;CACF"}
|
|
@@ -40,7 +40,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
40
40
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
41
41
|
function step(op) {
|
|
42
42
|
if (f) throw new TypeError("Generator is already executing.");
|
|
43
|
-
while (_) try {
|
|
43
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
44
44
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
45
45
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
46
46
|
switch (op[0]) {
|
|
@@ -98,6 +98,9 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
98
98
|
if (_this.config.globals.product) {
|
|
99
99
|
skus = [_this.config.globals.product];
|
|
100
100
|
}
|
|
101
|
+
else if (_this.config.globals.products) {
|
|
102
|
+
skus = _this.config.globals.products;
|
|
103
|
+
}
|
|
101
104
|
break;
|
|
102
105
|
case snap_tracker_1.ProfilePlacement.BASKETPAGE:
|
|
103
106
|
skus = _this.tracker.cookies.cart.get(); // this is an array
|
|
@@ -133,7 +136,7 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
133
136
|
product: {
|
|
134
137
|
id: result.id,
|
|
135
138
|
mappings: {
|
|
136
|
-
core: result.mappings.core,
|
|
139
|
+
core: result.display.mappings.core,
|
|
137
140
|
},
|
|
138
141
|
seed: getSeed(),
|
|
139
142
|
},
|
|
@@ -161,7 +164,7 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
161
164
|
product: {
|
|
162
165
|
id: result.id,
|
|
163
166
|
mappings: {
|
|
164
|
-
core: result.mappings.core,
|
|
167
|
+
core: result.display.mappings.core,
|
|
165
168
|
},
|
|
166
169
|
seed: getSeed(),
|
|
167
170
|
},
|
|
@@ -190,7 +193,7 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
190
193
|
product: {
|
|
191
194
|
id: result.id,
|
|
192
195
|
mappings: {
|
|
193
|
-
core: result.mappings.core,
|
|
196
|
+
core: result.display.mappings.core,
|
|
194
197
|
},
|
|
195
198
|
seed: getSeed(),
|
|
196
199
|
},
|
|
@@ -202,6 +205,104 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
202
205
|
_this.eventManager.fire('track.product.render', { controller: _this, result: result, trackEvent: event });
|
|
203
206
|
return event;
|
|
204
207
|
},
|
|
208
|
+
removedFromBundle: function (result) {
|
|
209
|
+
var _a, _b;
|
|
210
|
+
if (!_this.store.profile.tag ||
|
|
211
|
+
!result ||
|
|
212
|
+
!_this.events.render ||
|
|
213
|
+
!((_a = _this.events.product[result.id]) === null || _a === void 0 ? void 0 : _a.render) ||
|
|
214
|
+
_this.store.profile.type != 'bundle')
|
|
215
|
+
return;
|
|
216
|
+
var payload = {
|
|
217
|
+
type: snap_tracker_1.BeaconType.PROFILE_PRODUCT_REMOVEDFROMBUNDLE,
|
|
218
|
+
category: snap_tracker_1.BeaconCategory.RECOMMENDATIONS,
|
|
219
|
+
context: _this.config.globals.siteId ? { website: { trackingCode: _this.config.globals.siteId } } : undefined,
|
|
220
|
+
event: {
|
|
221
|
+
context: {
|
|
222
|
+
placement: _this.store.profile.placement,
|
|
223
|
+
tag: _this.store.profile.tag,
|
|
224
|
+
type: 'product-recommendation',
|
|
225
|
+
},
|
|
226
|
+
product: {
|
|
227
|
+
id: result.id,
|
|
228
|
+
mappings: {
|
|
229
|
+
core: result.display.mappings.core,
|
|
230
|
+
},
|
|
231
|
+
seed: getSeed(),
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
pid: (_b = _this.events.click) === null || _b === void 0 ? void 0 : _b.id,
|
|
235
|
+
};
|
|
236
|
+
_this.events.product[result.id] = _this.events.product[result.id] || {};
|
|
237
|
+
var event = (_this.events.product[result.id].render = _this.tracker.track.event(payload));
|
|
238
|
+
_this.eventManager.fire('track.product.removedFromBundle', { controller: _this, result: result, trackEvent: event });
|
|
239
|
+
return event;
|
|
240
|
+
},
|
|
241
|
+
addedToBundle: function (result) {
|
|
242
|
+
var _a, _b;
|
|
243
|
+
if (!_this.store.profile.tag ||
|
|
244
|
+
!result ||
|
|
245
|
+
!_this.events.render ||
|
|
246
|
+
!((_a = _this.events.product[result.id]) === null || _a === void 0 ? void 0 : _a.render) ||
|
|
247
|
+
_this.store.profile.type != 'bundle')
|
|
248
|
+
return;
|
|
249
|
+
var payload = {
|
|
250
|
+
type: snap_tracker_1.BeaconType.PROFILE_PRODUCT_ADDEDTOBUNDLE,
|
|
251
|
+
category: snap_tracker_1.BeaconCategory.RECOMMENDATIONS,
|
|
252
|
+
context: _this.config.globals.siteId ? { website: { trackingCode: _this.config.globals.siteId } } : undefined,
|
|
253
|
+
event: {
|
|
254
|
+
context: {
|
|
255
|
+
placement: _this.store.profile.placement,
|
|
256
|
+
tag: _this.store.profile.tag,
|
|
257
|
+
type: 'product-recommendation',
|
|
258
|
+
},
|
|
259
|
+
product: {
|
|
260
|
+
id: result.id,
|
|
261
|
+
mappings: {
|
|
262
|
+
core: result.display.mappings.core,
|
|
263
|
+
},
|
|
264
|
+
seed: getSeed(),
|
|
265
|
+
},
|
|
266
|
+
},
|
|
267
|
+
pid: (_b = _this.events.click) === null || _b === void 0 ? void 0 : _b.id,
|
|
268
|
+
};
|
|
269
|
+
_this.events.product[result.id] = _this.events.product[result.id] || {};
|
|
270
|
+
var event = (_this.events.product[result.id].render = _this.tracker.track.event(payload));
|
|
271
|
+
_this.eventManager.fire('track.product.addedToBundle', { controller: _this, result: result, trackEvent: event });
|
|
272
|
+
return event;
|
|
273
|
+
},
|
|
274
|
+
},
|
|
275
|
+
addBundle: function (e, results) {
|
|
276
|
+
if (!results.length || !_this.store.profile.tag || _this.store.profile.type != 'bundle')
|
|
277
|
+
return;
|
|
278
|
+
var event = _this.tracker.track.event({
|
|
279
|
+
type: snap_tracker_1.BeaconType.PROFILE_ADDBUNDLE,
|
|
280
|
+
category: snap_tracker_1.BeaconCategory.RECOMMENDATIONS,
|
|
281
|
+
context: _this.config.globals.siteId ? { website: { trackingCode: _this.config.globals.siteId } } : undefined,
|
|
282
|
+
event: {
|
|
283
|
+
context: {
|
|
284
|
+
placement: _this.store.profile.placement,
|
|
285
|
+
tag: _this.store.profile.tag,
|
|
286
|
+
type: 'product-recommendation',
|
|
287
|
+
},
|
|
288
|
+
products: results.map(function (result) { return ({
|
|
289
|
+
id: result.id,
|
|
290
|
+
mappings: {
|
|
291
|
+
core: result.display.mappings.core,
|
|
292
|
+
},
|
|
293
|
+
quantity: result.quantity,
|
|
294
|
+
}); }),
|
|
295
|
+
profile: {
|
|
296
|
+
tag: _this.store.profile.tag,
|
|
297
|
+
placement: _this.store.profile.placement,
|
|
298
|
+
threshold: _this.store.profile.display.threshold,
|
|
299
|
+
templateId: _this.store.profile.display.template.uuid,
|
|
300
|
+
seed: getSeed(),
|
|
301
|
+
},
|
|
302
|
+
},
|
|
303
|
+
});
|
|
304
|
+
_this.eventManager.fire('track.addBundle', { controller: _this, event: e, trackEvent: event });
|
|
305
|
+
return event;
|
|
205
306
|
},
|
|
206
307
|
click: function (e) {
|
|
207
308
|
if (!_this.store.profile.tag)
|
|
@@ -452,11 +553,26 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
452
553
|
}); });
|
|
453
554
|
// add 'afterStore' middleware
|
|
454
555
|
_this.eventManager.on('afterStore', function (recommend, next) { return __awaiter(_this, void 0, void 0, function () {
|
|
455
|
-
|
|
456
|
-
|
|
556
|
+
var _this = this;
|
|
557
|
+
var _a, _b;
|
|
558
|
+
return __generator(this, function (_c) {
|
|
559
|
+
switch (_c.label) {
|
|
457
560
|
case 0: return [4 /*yield*/, next()];
|
|
458
561
|
case 1:
|
|
459
|
-
|
|
562
|
+
_c.sent();
|
|
563
|
+
// attach tracking events to cart store
|
|
564
|
+
(_a = this.store.cart) === null || _a === void 0 ? void 0 : _a.on('addItems', function (_a) {
|
|
565
|
+
var items = _a.items;
|
|
566
|
+
items.forEach(function (item) {
|
|
567
|
+
_this.track.product.addedToBundle(item);
|
|
568
|
+
});
|
|
569
|
+
});
|
|
570
|
+
(_b = this.store.cart) === null || _b === void 0 ? void 0 : _b.on('removeItems', function (_a) {
|
|
571
|
+
var items = _a.items;
|
|
572
|
+
items.forEach(function (item) {
|
|
573
|
+
_this.track.product.removedFromBundle(item);
|
|
574
|
+
});
|
|
575
|
+
});
|
|
460
576
|
recommend.controller.store.loading = false;
|
|
461
577
|
return [2 /*return*/];
|
|
462
578
|
}
|
|
@@ -5,7 +5,7 @@ import type { BeaconEvent } from '@searchspring/snap-tracker';
|
|
|
5
5
|
import type { SearchStore } from '@searchspring/snap-store-mobx';
|
|
6
6
|
import type { SearchControllerConfig, ControllerServices, ContextVariables } from '../types';
|
|
7
7
|
import type { SearchRequestModel } from '@searchspring/snapi-types';
|
|
8
|
-
|
|
8
|
+
type SearchTrackMethods = {
|
|
9
9
|
product: {
|
|
10
10
|
click: (e: MouseEvent, result: any) => BeaconEvent | undefined;
|
|
11
11
|
};
|
|
@@ -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,EAA0B,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EACX,sBAAsB,EAItB,kBAAkB,EAClB,gBAAgB,EAGhB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EACX,kBAAkB,EAKlB,MAAM,2BAA2B,CAAC;AAmBnC,
|
|
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,EAA0B,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EACX,sBAAsB,EAItB,kBAAkB,EAClB,gBAAgB,EAGhB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EACX,kBAAkB,EAKlB,MAAM,2BAA2B,CAAC;AAmBnC,KAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KAC/D,CAAC;CACF,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,eAAe,CAAwC;gBAG9D,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IAgK3B,KAAK,EAAE,kBAAkB,CA8CvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAiD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAkN9B;CACF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAiBxF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,MAAM,GAAG,SAAS,CAgCvG"}
|
|
@@ -40,7 +40,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
40
40
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
41
41
|
function step(op) {
|
|
42
42
|
if (f) throw new TypeError("Generator is already executing.");
|
|
43
|
-
while (_) try {
|
|
43
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
44
44
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
45
45
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
46
46
|
switch (op[0]) {
|
|
@@ -101,24 +101,23 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
101
101
|
__extends(SearchController, _super);
|
|
102
102
|
function SearchController(config, _a, context) {
|
|
103
103
|
var client = _a.client, store = _a.store, urlManager = _a.urlManager, eventManager = _a.eventManager, profiler = _a.profiler, logger = _a.logger, tracker = _a.tracker;
|
|
104
|
-
var _this = this;
|
|
105
104
|
var _b, _c, _d, _e, _f;
|
|
106
|
-
_this = _super.call(this, config, { client: client, store: store, urlManager: urlManager, eventManager: eventManager, profiler: profiler, logger: logger, tracker: tracker }, context) || this;
|
|
105
|
+
var _this = _super.call(this, config, { client: client, store: store, urlManager: urlManager, eventManager: eventManager, profiler: profiler, logger: logger, tracker: tracker }, context) || this;
|
|
107
106
|
_this.type = types_1.ControllerTypes.search;
|
|
108
107
|
_this.previousResults = [];
|
|
109
108
|
_this.track = {
|
|
110
109
|
product: {
|
|
111
110
|
click: function (e, result) {
|
|
112
|
-
var _a, _b;
|
|
111
|
+
var _a, _b, _c, _d;
|
|
113
112
|
var target = e.target;
|
|
114
|
-
var resultHref = (_a = result.mappings.core) === null ||
|
|
113
|
+
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);
|
|
115
114
|
var elemHref = target === null || target === void 0 ? void 0 : target.getAttribute('href');
|
|
116
115
|
// the href that should be used for restoration - if the elemHref contains the resultHref - use resultHref
|
|
117
116
|
var storedHref = (elemHref === null || elemHref === void 0 ? void 0 : elemHref.indexOf(resultHref)) != -1 ? resultHref : elemHref || resultHref;
|
|
118
117
|
var scrollMap = {};
|
|
119
118
|
// generate the selector using element class and parent classes
|
|
120
119
|
var selector = generateHrefSelector(target, storedHref);
|
|
121
|
-
var domRect = selector ? (
|
|
120
|
+
var domRect = selector ? (_d = document === null || document === void 0 ? void 0 : document.querySelector(selector)) === null || _d === void 0 ? void 0 : _d.getBoundingClientRect() : undefined;
|
|
122
121
|
// store element position data to scrollMap
|
|
123
122
|
if (selector || storedHref || domRect) {
|
|
124
123
|
try {
|
|
@@ -135,7 +134,7 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
135
134
|
// store position data or empty object
|
|
136
135
|
_this.storage.set('scrollMap', scrollMap);
|
|
137
136
|
// track
|
|
138
|
-
var
|
|
137
|
+
var _e = result.attributes, intellisuggestData = _e.intellisuggestData, intellisuggestSignature = _e.intellisuggestSignature;
|
|
139
138
|
var event = _this.tracker.track.product.click({
|
|
140
139
|
intellisuggestData: intellisuggestData,
|
|
141
140
|
intellisuggestSignature: intellisuggestSignature,
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -7,27 +7,27 @@ import type { Profiler } from '@searchspring/snap-profiler';
|
|
|
7
7
|
import type { UrlManager } from '@searchspring/snap-url-manager';
|
|
8
8
|
import type { Logger } from '@searchspring/snap-logger';
|
|
9
9
|
import type { SearchRequestModel } from '@searchspring/snapi-types';
|
|
10
|
-
export
|
|
11
|
-
export
|
|
12
|
-
export
|
|
10
|
+
export type PluginFunction = (cntrlr: AbstractController, ...args: any) => Promise<void> | void;
|
|
11
|
+
export type PluginGrouping = [func: PluginFunction, ...args: unknown[]];
|
|
12
|
+
export type BeforeSearchObj = {
|
|
13
13
|
controller: AbstractController;
|
|
14
14
|
request: any;
|
|
15
15
|
};
|
|
16
|
-
export
|
|
16
|
+
export type AfterSearchObj = {
|
|
17
17
|
controller: AbstractController;
|
|
18
18
|
response: any;
|
|
19
19
|
request: SearchRequestModel;
|
|
20
20
|
};
|
|
21
|
-
export
|
|
21
|
+
export type AfterStoreObj = {
|
|
22
22
|
controller: AbstractController;
|
|
23
23
|
request: any;
|
|
24
24
|
response: any;
|
|
25
25
|
};
|
|
26
|
-
export
|
|
26
|
+
export type RestorePositionObj = {
|
|
27
27
|
controller: AbstractController;
|
|
28
28
|
element?: ElementPositionObj;
|
|
29
29
|
};
|
|
30
|
-
export
|
|
30
|
+
export type ElementPositionObj = {
|
|
31
31
|
href?: string;
|
|
32
32
|
selector?: string;
|
|
33
33
|
domRect?: DOMRect;
|
|
@@ -38,8 +38,8 @@ export declare enum ControllerTypes {
|
|
|
38
38
|
finder = "finder",
|
|
39
39
|
recommendation = "recommendation"
|
|
40
40
|
}
|
|
41
|
-
export
|
|
42
|
-
export
|
|
41
|
+
export type Controllers = SearchController | AutocompleteController | FinderController | RecommendationController;
|
|
42
|
+
export type ControllerServices = {
|
|
43
43
|
client: Client;
|
|
44
44
|
store: SearchStore | AutocompleteStore | FinderStore | RecommendationStore;
|
|
45
45
|
urlManager: UrlManager;
|
|
@@ -48,14 +48,14 @@ export declare type ControllerServices = {
|
|
|
48
48
|
logger: Logger;
|
|
49
49
|
tracker: Tracker;
|
|
50
50
|
};
|
|
51
|
-
export
|
|
51
|
+
export type Attachments = {
|
|
52
52
|
middleware?: {
|
|
53
53
|
[eventName: string]: Middleware<any> | Middleware<any>[];
|
|
54
54
|
};
|
|
55
55
|
plugins?: PluginGrouping[];
|
|
56
56
|
[any: string]: unknown;
|
|
57
57
|
};
|
|
58
|
-
export
|
|
58
|
+
export type ContextVariables = {
|
|
59
59
|
shopper?: {
|
|
60
60
|
id: string;
|
|
61
61
|
cart?: ProductViewEvent[];
|
|
@@ -63,10 +63,10 @@ export declare type ContextVariables = {
|
|
|
63
63
|
};
|
|
64
64
|
[variable: string]: any;
|
|
65
65
|
};
|
|
66
|
-
export
|
|
67
|
-
export
|
|
68
|
-
export
|
|
69
|
-
export
|
|
70
|
-
export
|
|
71
|
-
export
|
|
66
|
+
export type ControllerConfig = StoreConfig & Attachments;
|
|
67
|
+
export type SearchControllerConfig = ControllerConfig & SearchStoreConfig;
|
|
68
|
+
export type FinderControllerConfig = ControllerConfig & FinderStoreConfig;
|
|
69
|
+
export type AutocompleteControllerConfig = ControllerConfig & AutocompleteStoreConfig;
|
|
70
|
+
export type RecommendationControllerConfig = ControllerConfig & RecommendationStoreConfig;
|
|
71
|
+
export type ControllerConfigs = SearchControllerConfig | AutocompleteControllerConfig | FinderControllerConfig | RecommendationControllerConfig;
|
|
72
72
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/cjs/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACxI,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAEjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EACX,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/types.js
CHANGED
|
@@ -7,4 +7,4 @@ var ControllerTypes;
|
|
|
7
7
|
ControllerTypes["autocomplete"] = "autocomplete";
|
|
8
8
|
ControllerTypes["finder"] = "finder";
|
|
9
9
|
ControllerTypes["recommendation"] = "recommendation";
|
|
10
|
-
})(ControllerTypes
|
|
10
|
+
})(ControllerTypes || (exports.ControllerTypes = ControllerTypes = {}));
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { DomTargeter } from '@searchspring/snap-toolbox';
|
|
2
2
|
export class AbstractController {
|
|
3
|
+
get initialized() {
|
|
4
|
+
return this._initialized;
|
|
5
|
+
}
|
|
3
6
|
constructor(config, { client, store, urlManager, eventManager, profiler, logger, tracker }, context = {}) {
|
|
4
7
|
this.type = 'abstract';
|
|
5
8
|
this.targeters = {};
|
|
@@ -94,9 +97,6 @@ export class AbstractController {
|
|
|
94
97
|
// set namespaces
|
|
95
98
|
this.profiler.setNamespace(this.config.id);
|
|
96
99
|
}
|
|
97
|
-
get initialized() {
|
|
98
|
-
return this._initialized;
|
|
99
|
-
}
|
|
100
100
|
createTargeter(target, onTarget, document) {
|
|
101
101
|
return this.addTargeter(new DomTargeter([target], onTarget, document));
|
|
102
102
|
}
|
|
@@ -6,7 +6,7 @@ import { AutocompleteStore } from '@searchspring/snap-store-mobx';
|
|
|
6
6
|
import type { AutocompleteControllerConfig, ControllerServices, ContextVariables } from '../types';
|
|
7
7
|
import type { AutocompleteRequestModel } from '@searchspring/snapi-types';
|
|
8
8
|
export declare const INPUT_DELAY = 200;
|
|
9
|
-
|
|
9
|
+
type AutocompleteTrackMethods = {
|
|
10
10
|
product: {
|
|
11
11
|
click: (e: MouseEvent, result: any) => void;
|
|
12
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AACrF,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,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEnJ,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG1E,eAAO,MAAM,WAAW,MAAM,CAAC;AA2B/B,
|
|
1
|
+
{"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AACrF,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,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEnJ,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG1E,eAAO,MAAM,WAAW,MAAM,CAAC;AA2B/B,KAAK,wBAAwB,GAAG;IAC/B,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;KAC5C,CAAC;CACF,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,kBAAkB;IACtD,IAAI,kBAAgC;IACnC,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,4BAA4B,CAAC;IACtC,OAAO,EAAE,YAAY,CAAC;gBAG5B,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;IAsE3B,KAAK,EAAE,wBAAwB,CAO7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CA0CrC;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;;;;uBAqDL,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAgBR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6E3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAwBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAmI9B;CACF"}
|
|
@@ -5,13 +5,16 @@ import { ControllerTypes } from '../types';
|
|
|
5
5
|
import type { RecommendationStore } from '@searchspring/snap-store-mobx';
|
|
6
6
|
import type { RecommendCombinedRequestModel } from '@searchspring/snap-client';
|
|
7
7
|
import type { RecommendationControllerConfig, ControllerServices, ContextVariables } from '../types';
|
|
8
|
-
|
|
8
|
+
type RecommendationTrackMethods = {
|
|
9
9
|
product: {
|
|
10
|
-
click: (e: MouseEvent, result:
|
|
11
|
-
render: (result:
|
|
12
|
-
impression: (result:
|
|
10
|
+
click: (e: MouseEvent, result: Product) => BeaconEvent | undefined;
|
|
11
|
+
render: (result: Product) => BeaconEvent | undefined;
|
|
12
|
+
impression: (result: Product) => BeaconEvent | undefined;
|
|
13
|
+
removedFromBundle: (result: Product) => BeaconEvent | undefined;
|
|
14
|
+
addedToBundle: (result: Product) => BeaconEvent | undefined;
|
|
13
15
|
};
|
|
14
16
|
click: (e: MouseEvent) => BeaconEvent | undefined;
|
|
17
|
+
addBundle: (e: MouseEvent, results: Product[]) => BeaconEvent | undefined;
|
|
15
18
|
impression: () => BeaconEvent | undefined;
|
|
16
19
|
render: (results?: Product[]) => BeaconEvent | undefined;
|
|
17
20
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,KAAK,EAAE,8BAA8B,EAAkC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErI,
|
|
1
|
+
{"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,KAAK,EAAE,8BAA8B,EAAkC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErI,KAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QACnE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QACrD,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QACzD,iBAAiB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QAChE,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;KAC5D,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,WAAW,GAAG,SAAS,CAAC;IAClD,SAAS,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,GAAG,SAAS,CAAC;IAC1E,UAAU,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,WAAW,GAAG,SAAS,CAAC;CACzD,CAAC;AAUF,qBAAa,wBAAyB,SAAQ,kBAAkB;IACxD,IAAI,kBAAkC;IACrC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,8BAA8B,CAAC;IAE/C,MAAM,EAAE;QACP,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,UAAU,CAAC,EAAE,WAAW,CAAC;QACzB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,UAAU,CAAC,EAAE,WAAW,CAAC;YAAC,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,CAAC,CAAC;KAC7E,CAKC;gBAGD,MAAM,EAAE,8BAA8B,EACtC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA2C3B,KAAK,EAAE,0BAA0B,CAwS5B;IAEL,IAAI,MAAM,IAAI,6BAA6B,CA2B1C;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAuH9B;CACF"}
|
|
@@ -28,6 +28,9 @@ export class RecommendationController extends AbstractController {
|
|
|
28
28
|
if (this.config.globals.product) {
|
|
29
29
|
skus = [this.config.globals.product];
|
|
30
30
|
}
|
|
31
|
+
else if (this.config.globals.products) {
|
|
32
|
+
skus = this.config.globals.products;
|
|
33
|
+
}
|
|
31
34
|
break;
|
|
32
35
|
case ProfilePlacement.BASKETPAGE:
|
|
33
36
|
skus = this.tracker.cookies.cart.get(); // this is an array
|
|
@@ -62,7 +65,7 @@ export class RecommendationController extends AbstractController {
|
|
|
62
65
|
product: {
|
|
63
66
|
id: result.id,
|
|
64
67
|
mappings: {
|
|
65
|
-
core: result.mappings.core,
|
|
68
|
+
core: result.display.mappings.core,
|
|
66
69
|
},
|
|
67
70
|
seed: getSeed(),
|
|
68
71
|
},
|
|
@@ -89,7 +92,7 @@ export class RecommendationController extends AbstractController {
|
|
|
89
92
|
product: {
|
|
90
93
|
id: result.id,
|
|
91
94
|
mappings: {
|
|
92
|
-
core: result.mappings.core,
|
|
95
|
+
core: result.display.mappings.core,
|
|
93
96
|
},
|
|
94
97
|
seed: getSeed(),
|
|
95
98
|
},
|
|
@@ -117,7 +120,7 @@ export class RecommendationController extends AbstractController {
|
|
|
117
120
|
product: {
|
|
118
121
|
id: result.id,
|
|
119
122
|
mappings: {
|
|
120
|
-
core: result.mappings.core,
|
|
123
|
+
core: result.display.mappings.core,
|
|
121
124
|
},
|
|
122
125
|
seed: getSeed(),
|
|
123
126
|
},
|
|
@@ -129,6 +132,102 @@ export class RecommendationController extends AbstractController {
|
|
|
129
132
|
this.eventManager.fire('track.product.render', { controller: this, result, trackEvent: event });
|
|
130
133
|
return event;
|
|
131
134
|
},
|
|
135
|
+
removedFromBundle: (result) => {
|
|
136
|
+
if (!this.store.profile.tag ||
|
|
137
|
+
!result ||
|
|
138
|
+
!this.events.render ||
|
|
139
|
+
!this.events.product[result.id]?.render ||
|
|
140
|
+
this.store.profile.type != 'bundle')
|
|
141
|
+
return;
|
|
142
|
+
const payload = {
|
|
143
|
+
type: BeaconType.PROFILE_PRODUCT_REMOVEDFROMBUNDLE,
|
|
144
|
+
category: BeaconCategory.RECOMMENDATIONS,
|
|
145
|
+
context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : undefined,
|
|
146
|
+
event: {
|
|
147
|
+
context: {
|
|
148
|
+
placement: this.store.profile.placement,
|
|
149
|
+
tag: this.store.profile.tag,
|
|
150
|
+
type: 'product-recommendation',
|
|
151
|
+
},
|
|
152
|
+
product: {
|
|
153
|
+
id: result.id,
|
|
154
|
+
mappings: {
|
|
155
|
+
core: result.display.mappings.core,
|
|
156
|
+
},
|
|
157
|
+
seed: getSeed(),
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
pid: this.events.click?.id,
|
|
161
|
+
};
|
|
162
|
+
this.events.product[result.id] = this.events.product[result.id] || {};
|
|
163
|
+
const event = (this.events.product[result.id].render = this.tracker.track.event(payload));
|
|
164
|
+
this.eventManager.fire('track.product.removedFromBundle', { controller: this, result, trackEvent: event });
|
|
165
|
+
return event;
|
|
166
|
+
},
|
|
167
|
+
addedToBundle: (result) => {
|
|
168
|
+
if (!this.store.profile.tag ||
|
|
169
|
+
!result ||
|
|
170
|
+
!this.events.render ||
|
|
171
|
+
!this.events.product[result.id]?.render ||
|
|
172
|
+
this.store.profile.type != 'bundle')
|
|
173
|
+
return;
|
|
174
|
+
const payload = {
|
|
175
|
+
type: BeaconType.PROFILE_PRODUCT_ADDEDTOBUNDLE,
|
|
176
|
+
category: BeaconCategory.RECOMMENDATIONS,
|
|
177
|
+
context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : undefined,
|
|
178
|
+
event: {
|
|
179
|
+
context: {
|
|
180
|
+
placement: this.store.profile.placement,
|
|
181
|
+
tag: this.store.profile.tag,
|
|
182
|
+
type: 'product-recommendation',
|
|
183
|
+
},
|
|
184
|
+
product: {
|
|
185
|
+
id: result.id,
|
|
186
|
+
mappings: {
|
|
187
|
+
core: result.display.mappings.core,
|
|
188
|
+
},
|
|
189
|
+
seed: getSeed(),
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
pid: this.events.click?.id,
|
|
193
|
+
};
|
|
194
|
+
this.events.product[result.id] = this.events.product[result.id] || {};
|
|
195
|
+
const event = (this.events.product[result.id].render = this.tracker.track.event(payload));
|
|
196
|
+
this.eventManager.fire('track.product.addedToBundle', { controller: this, result, trackEvent: event });
|
|
197
|
+
return event;
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
addBundle: (e, results) => {
|
|
201
|
+
if (!results.length || !this.store.profile.tag || this.store.profile.type != 'bundle')
|
|
202
|
+
return;
|
|
203
|
+
const event = this.tracker.track.event({
|
|
204
|
+
type: BeaconType.PROFILE_ADDBUNDLE,
|
|
205
|
+
category: BeaconCategory.RECOMMENDATIONS,
|
|
206
|
+
context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : undefined,
|
|
207
|
+
event: {
|
|
208
|
+
context: {
|
|
209
|
+
placement: this.store.profile.placement,
|
|
210
|
+
tag: this.store.profile.tag,
|
|
211
|
+
type: 'product-recommendation',
|
|
212
|
+
},
|
|
213
|
+
products: results.map((result) => ({
|
|
214
|
+
id: result.id,
|
|
215
|
+
mappings: {
|
|
216
|
+
core: result.display.mappings.core,
|
|
217
|
+
},
|
|
218
|
+
quantity: result.quantity,
|
|
219
|
+
})),
|
|
220
|
+
profile: {
|
|
221
|
+
tag: this.store.profile.tag,
|
|
222
|
+
placement: this.store.profile.placement,
|
|
223
|
+
threshold: this.store.profile.display.threshold,
|
|
224
|
+
templateId: this.store.profile.display.template.uuid,
|
|
225
|
+
seed: getSeed(),
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
});
|
|
229
|
+
this.eventManager.fire('track.addBundle', { controller: this, event: e, trackEvent: event });
|
|
230
|
+
return event;
|
|
132
231
|
},
|
|
133
232
|
click: (e) => {
|
|
134
233
|
if (!this.store.profile.tag)
|
|
@@ -339,6 +438,17 @@ export class RecommendationController extends AbstractController {
|
|
|
339
438
|
// add 'afterStore' middleware
|
|
340
439
|
this.eventManager.on('afterStore', async (recommend, next) => {
|
|
341
440
|
await next();
|
|
441
|
+
// attach tracking events to cart store
|
|
442
|
+
this.store.cart?.on('addItems', ({ items }) => {
|
|
443
|
+
items.forEach((item) => {
|
|
444
|
+
this.track.product.addedToBundle(item);
|
|
445
|
+
});
|
|
446
|
+
});
|
|
447
|
+
this.store.cart?.on('removeItems', ({ items }) => {
|
|
448
|
+
items.forEach((item) => {
|
|
449
|
+
this.track.product.removedFromBundle(item);
|
|
450
|
+
});
|
|
451
|
+
});
|
|
342
452
|
recommend.controller.store.loading = false;
|
|
343
453
|
});
|
|
344
454
|
// attach config plugins and event middleware
|
|
@@ -5,7 +5,7 @@ import type { BeaconEvent } from '@searchspring/snap-tracker';
|
|
|
5
5
|
import type { SearchStore } from '@searchspring/snap-store-mobx';
|
|
6
6
|
import type { SearchControllerConfig, ControllerServices, ContextVariables } from '../types';
|
|
7
7
|
import type { SearchRequestModel } from '@searchspring/snapi-types';
|
|
8
|
-
|
|
8
|
+
type SearchTrackMethods = {
|
|
9
9
|
product: {
|
|
10
10
|
click: (e: MouseEvent, result: any) => BeaconEvent | undefined;
|
|
11
11
|
};
|
|
@@ -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,EAA0B,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EACX,sBAAsB,EAItB,kBAAkB,EAClB,gBAAgB,EAGhB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EACX,kBAAkB,EAKlB,MAAM,2BAA2B,CAAC;AAmBnC,
|
|
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,EAA0B,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EACX,sBAAsB,EAItB,kBAAkB,EAClB,gBAAgB,EAGhB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EACX,kBAAkB,EAKlB,MAAM,2BAA2B,CAAC;AAmBnC,KAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KAC/D,CAAC;CACF,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,eAAe,CAAwC;gBAG9D,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IAgK3B,KAAK,EAAE,kBAAkB,CA8CvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAiD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAkN9B;CACF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAiBxF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,MAAM,GAAG,SAAS,CAgCvG"}
|
|
@@ -29,7 +29,7 @@ export class SearchController extends AbstractController {
|
|
|
29
29
|
product: {
|
|
30
30
|
click: (e, result) => {
|
|
31
31
|
const target = e.target;
|
|
32
|
-
const resultHref = result.mappings.core?.url;
|
|
32
|
+
const resultHref = result.display?.mappings.core?.url || result.mappings.core?.url;
|
|
33
33
|
const elemHref = target?.getAttribute('href');
|
|
34
34
|
// the href that should be used for restoration - if the elemHref contains the resultHref - use resultHref
|
|
35
35
|
const storedHref = elemHref?.indexOf(resultHref) != -1 ? resultHref : elemHref || resultHref;
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -7,27 +7,27 @@ import type { Profiler } from '@searchspring/snap-profiler';
|
|
|
7
7
|
import type { UrlManager } from '@searchspring/snap-url-manager';
|
|
8
8
|
import type { Logger } from '@searchspring/snap-logger';
|
|
9
9
|
import type { SearchRequestModel } from '@searchspring/snapi-types';
|
|
10
|
-
export
|
|
11
|
-
export
|
|
12
|
-
export
|
|
10
|
+
export type PluginFunction = (cntrlr: AbstractController, ...args: any) => Promise<void> | void;
|
|
11
|
+
export type PluginGrouping = [func: PluginFunction, ...args: unknown[]];
|
|
12
|
+
export type BeforeSearchObj = {
|
|
13
13
|
controller: AbstractController;
|
|
14
14
|
request: any;
|
|
15
15
|
};
|
|
16
|
-
export
|
|
16
|
+
export type AfterSearchObj = {
|
|
17
17
|
controller: AbstractController;
|
|
18
18
|
response: any;
|
|
19
19
|
request: SearchRequestModel;
|
|
20
20
|
};
|
|
21
|
-
export
|
|
21
|
+
export type AfterStoreObj = {
|
|
22
22
|
controller: AbstractController;
|
|
23
23
|
request: any;
|
|
24
24
|
response: any;
|
|
25
25
|
};
|
|
26
|
-
export
|
|
26
|
+
export type RestorePositionObj = {
|
|
27
27
|
controller: AbstractController;
|
|
28
28
|
element?: ElementPositionObj;
|
|
29
29
|
};
|
|
30
|
-
export
|
|
30
|
+
export type ElementPositionObj = {
|
|
31
31
|
href?: string;
|
|
32
32
|
selector?: string;
|
|
33
33
|
domRect?: DOMRect;
|
|
@@ -38,8 +38,8 @@ export declare enum ControllerTypes {
|
|
|
38
38
|
finder = "finder",
|
|
39
39
|
recommendation = "recommendation"
|
|
40
40
|
}
|
|
41
|
-
export
|
|
42
|
-
export
|
|
41
|
+
export type Controllers = SearchController | AutocompleteController | FinderController | RecommendationController;
|
|
42
|
+
export type ControllerServices = {
|
|
43
43
|
client: Client;
|
|
44
44
|
store: SearchStore | AutocompleteStore | FinderStore | RecommendationStore;
|
|
45
45
|
urlManager: UrlManager;
|
|
@@ -48,14 +48,14 @@ export declare type ControllerServices = {
|
|
|
48
48
|
logger: Logger;
|
|
49
49
|
tracker: Tracker;
|
|
50
50
|
};
|
|
51
|
-
export
|
|
51
|
+
export type Attachments = {
|
|
52
52
|
middleware?: {
|
|
53
53
|
[eventName: string]: Middleware<any> | Middleware<any>[];
|
|
54
54
|
};
|
|
55
55
|
plugins?: PluginGrouping[];
|
|
56
56
|
[any: string]: unknown;
|
|
57
57
|
};
|
|
58
|
-
export
|
|
58
|
+
export type ContextVariables = {
|
|
59
59
|
shopper?: {
|
|
60
60
|
id: string;
|
|
61
61
|
cart?: ProductViewEvent[];
|
|
@@ -63,10 +63,10 @@ export declare type ContextVariables = {
|
|
|
63
63
|
};
|
|
64
64
|
[variable: string]: any;
|
|
65
65
|
};
|
|
66
|
-
export
|
|
67
|
-
export
|
|
68
|
-
export
|
|
69
|
-
export
|
|
70
|
-
export
|
|
71
|
-
export
|
|
66
|
+
export type ControllerConfig = StoreConfig & Attachments;
|
|
67
|
+
export type SearchControllerConfig = ControllerConfig & SearchStoreConfig;
|
|
68
|
+
export type FinderControllerConfig = ControllerConfig & FinderStoreConfig;
|
|
69
|
+
export type AutocompleteControllerConfig = ControllerConfig & AutocompleteStoreConfig;
|
|
70
|
+
export type RecommendationControllerConfig = ControllerConfig & RecommendationStoreConfig;
|
|
71
|
+
export type ControllerConfigs = SearchControllerConfig | AutocompleteControllerConfig | FinderControllerConfig | RecommendationControllerConfig;
|
|
72
72
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/esm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACxI,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAEjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EACX,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@searchspring/snap-controller",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.52.1",
|
|
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.
|
|
23
|
+
"@searchspring/snap-toolbox": "^0.52.1",
|
|
24
24
|
"css.escape": "1.5.1",
|
|
25
25
|
"deepmerge": "4.3.1"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@searchspring/snap-client": "^0.
|
|
29
|
-
"@searchspring/snap-event-manager": "^0.
|
|
30
|
-
"@searchspring/snap-logger": "^0.
|
|
31
|
-
"@searchspring/snap-profiler": "^0.
|
|
32
|
-
"@searchspring/snap-store-mobx": "^0.
|
|
33
|
-
"@searchspring/snap-tracker": "^0.
|
|
34
|
-
"@searchspring/snap-url-manager": "^0.
|
|
28
|
+
"@searchspring/snap-client": "^0.52.1",
|
|
29
|
+
"@searchspring/snap-event-manager": "^0.52.1",
|
|
30
|
+
"@searchspring/snap-logger": "^0.52.1",
|
|
31
|
+
"@searchspring/snap-profiler": "^0.52.1",
|
|
32
|
+
"@searchspring/snap-store-mobx": "^0.52.1",
|
|
33
|
+
"@searchspring/snap-tracker": "^0.52.1",
|
|
34
|
+
"@searchspring/snap-url-manager": "^0.52.1"
|
|
35
35
|
},
|
|
36
36
|
"sideEffects": false,
|
|
37
37
|
"files": [
|
|
38
38
|
"dist/**/*"
|
|
39
39
|
],
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "c9651b79b78d8105b0f17234528ab6ba8eaa3cab"
|
|
41
41
|
}
|