@searchspring/snap-controller 0.27.5 → 0.27.8
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.d.ts +5 -4
- package/dist/cjs/Abstract/AbstractController.d.ts.map +1 -1
- package/dist/cjs/Autocomplete/AutocompleteController.d.ts +6 -5
- package/dist/cjs/Autocomplete/AutocompleteController.d.ts.map +1 -1
- package/dist/cjs/Autocomplete/AutocompleteController.js +43 -37
- package/dist/cjs/Finder/FinderController.d.ts.map +1 -1
- package/dist/cjs/Finder/FinderController.js +4 -1
- package/dist/cjs/Recommendation/RecommendationController.d.ts +26 -12
- package/dist/cjs/Recommendation/RecommendationController.d.ts.map +1 -1
- package/dist/cjs/Recommendation/RecommendationController.js +12 -11
- 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 +39 -36
- package/dist/cjs/types.d.ts +3 -3
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/utils/getParams.d.ts +2 -1
- package/dist/cjs/utils/getParams.d.ts.map +1 -1
- package/dist/cjs/utils/getParams.js +0 -1
- package/dist/esm/Abstract/AbstractController.d.ts +5 -4
- package/dist/esm/Abstract/AbstractController.d.ts.map +1 -1
- package/dist/esm/Autocomplete/AutocompleteController.d.ts +6 -5
- package/dist/esm/Autocomplete/AutocompleteController.d.ts.map +1 -1
- package/dist/esm/Autocomplete/AutocompleteController.js +13 -8
- package/dist/esm/Finder/FinderController.d.ts.map +1 -1
- package/dist/esm/Finder/FinderController.js +4 -1
- package/dist/esm/Recommendation/RecommendationController.d.ts +26 -12
- package/dist/esm/Recommendation/RecommendationController.d.ts.map +1 -1
- package/dist/esm/Recommendation/RecommendationController.js +11 -10
- 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 +8 -5
- package/dist/esm/types.d.ts +3 -3
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/utils/getParams.d.ts +2 -1
- package/dist/esm/utils/getParams.d.ts.map +1 -1
- package/dist/esm/utils/getParams.js +0 -1
- package/package.json +11 -11
|
@@ -105,18 +105,18 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
105
105
|
_this.track = {
|
|
106
106
|
product: {
|
|
107
107
|
click: function (e, result) {
|
|
108
|
-
var _a;
|
|
108
|
+
var _a, _b;
|
|
109
109
|
// store scroll position
|
|
110
|
-
if (_this.config.settings.infinite) {
|
|
110
|
+
if ((_a = _this.config.settings) === null || _a === void 0 ? void 0 : _a.infinite) {
|
|
111
111
|
var stringyParams = _this.storage.get('lastStringyParams');
|
|
112
112
|
var scrollMap = {};
|
|
113
113
|
scrollMap[stringyParams] = window.scrollY;
|
|
114
114
|
_this.storage.set('scrollMap', scrollMap);
|
|
115
115
|
}
|
|
116
116
|
// track
|
|
117
|
-
var
|
|
117
|
+
var _c = result.attributes, intellisuggestData = _c.intellisuggestData, intellisuggestSignature = _c.intellisuggestSignature;
|
|
118
118
|
var target = e.target;
|
|
119
|
-
var href = (target === null || target === void 0 ? void 0 : target.href) || ((
|
|
119
|
+
var href = (target === null || target === void 0 ? void 0 : target.href) || ((_b = result.mappings.core) === null || _b === void 0 ? void 0 : _b.url) || undefined;
|
|
120
120
|
var event = _this.tracker.track.product.click({
|
|
121
121
|
intellisuggestData: intellisuggestData,
|
|
122
122
|
intellisuggestSignature: intellisuggestSignature,
|
|
@@ -129,32 +129,32 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
129
129
|
};
|
|
130
130
|
_this.search = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
131
131
|
var params, err_1, stringyParams, prevStringyParams, preventBackfill, dontBackfill, searchProfile, _a, meta, response, previousResults_1, backfills, page, backfillParams, backfillResponses, afterSearchProfile, err_2, afterStoreProfile, err_3, err_4;
|
|
132
|
-
var _b, _c, _d, _e, _f, _g, _h;
|
|
133
|
-
return __generator(this, function (
|
|
134
|
-
switch (
|
|
132
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
133
|
+
return __generator(this, function (_m) {
|
|
134
|
+
switch (_m.label) {
|
|
135
135
|
case 0:
|
|
136
136
|
if (!!this.initialized) return [3 /*break*/, 2];
|
|
137
137
|
return [4 /*yield*/, this.init()];
|
|
138
138
|
case 1:
|
|
139
|
-
|
|
140
|
-
|
|
139
|
+
_m.sent();
|
|
140
|
+
_m.label = 2;
|
|
141
141
|
case 2:
|
|
142
142
|
params = this.params;
|
|
143
|
-
|
|
143
|
+
_m.label = 3;
|
|
144
144
|
case 3:
|
|
145
|
-
|
|
146
|
-
|
|
145
|
+
_m.trys.push([3, 20, , 21]);
|
|
146
|
+
_m.label = 4;
|
|
147
147
|
case 4:
|
|
148
|
-
|
|
148
|
+
_m.trys.push([4, 6, , 7]);
|
|
149
149
|
return [4 /*yield*/, this.eventManager.fire('beforeSearch', {
|
|
150
150
|
controller: this,
|
|
151
151
|
request: params,
|
|
152
152
|
})];
|
|
153
153
|
case 5:
|
|
154
|
-
|
|
154
|
+
_m.sent();
|
|
155
155
|
return [3 /*break*/, 7];
|
|
156
156
|
case 6:
|
|
157
|
-
err_1 =
|
|
157
|
+
err_1 = _m.sent();
|
|
158
158
|
if ((err_1 === null || err_1 === void 0 ? void 0 : err_1.message) == 'cancelled') {
|
|
159
159
|
this.log.warn("'beforeSearch' middleware cancelled");
|
|
160
160
|
return [2 /*return*/];
|
|
@@ -171,9 +171,9 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
171
171
|
// no param change - not searching
|
|
172
172
|
return [2 /*return*/];
|
|
173
173
|
}
|
|
174
|
-
if (this.config.settings.infinite) {
|
|
175
|
-
preventBackfill = ((
|
|
176
|
-
dontBackfill = !((
|
|
174
|
+
if ((_b = this.config.settings) === null || _b === void 0 ? void 0 : _b.infinite) {
|
|
175
|
+
preventBackfill = ((_c = this.config.settings.infinite) === null || _c === void 0 ? void 0 : _c.backfill) && !this.store.results.length && ((_d = params.pagination) === null || _d === void 0 ? void 0 : _d.page) > this.config.settings.infinite.backfill;
|
|
176
|
+
dontBackfill = !((_e = this.config.settings.infinite) === null || _e === void 0 ? void 0 : _e.backfill) && !this.store.results.length && ((_f = params.pagination) === null || _f === void 0 ? void 0 : _f.page) > 1;
|
|
177
177
|
if (preventBackfill || dontBackfill) {
|
|
178
178
|
this.storage.set('scrollMap', {});
|
|
179
179
|
this.urlManager.set('page', 1).go();
|
|
@@ -183,50 +183,52 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
183
183
|
searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
|
|
184
184
|
return [4 /*yield*/, this.client.search(params)];
|
|
185
185
|
case 8:
|
|
186
|
-
_a =
|
|
186
|
+
_a = _m.sent(), meta = _a[0], response = _a[1];
|
|
187
|
+
// @ts-ignore
|
|
187
188
|
if (!response.meta) {
|
|
188
189
|
/**
|
|
189
190
|
* MockClient will overwrite the client search() method and use
|
|
190
191
|
* SearchData to return mock data which already contains meta data
|
|
191
192
|
*/
|
|
193
|
+
// @ts-ignore
|
|
192
194
|
response.meta = meta;
|
|
193
195
|
}
|
|
194
|
-
if (!(this.config.settings.infinite && ((
|
|
195
|
-
previousResults_1 = ((
|
|
196
|
-
if (!(((
|
|
196
|
+
if (!(((_g = this.config.settings) === null || _g === void 0 ? void 0 : _g.infinite) && ((_h = params.pagination) === null || _h === void 0 ? void 0 : _h.page) > 1)) return [3 /*break*/, 11];
|
|
197
|
+
previousResults_1 = ((_j = this.store.data) === null || _j === void 0 ? void 0 : _j.results) || [];
|
|
198
|
+
if (!(((_k = this.config.settings) === null || _k === void 0 ? void 0 : _k.infinite.backfill) && !previousResults_1.length)) return [3 /*break*/, 10];
|
|
197
199
|
backfills = [];
|
|
198
|
-
for (page = 1; page < params.pagination.page; page++) {
|
|
200
|
+
for (page = 1; page < ((_l = params.pagination) === null || _l === void 0 ? void 0 : _l.page); page++) {
|
|
199
201
|
backfillParams = (0, deepmerge_1.default)(__assign({}, params), { pagination: { page: page } });
|
|
200
202
|
backfills.push(this.client.search(backfillParams));
|
|
201
203
|
}
|
|
202
204
|
return [4 /*yield*/, Promise.all(backfills)];
|
|
203
205
|
case 9:
|
|
204
|
-
backfillResponses =
|
|
206
|
+
backfillResponses = _m.sent();
|
|
205
207
|
backfillResponses.map(function (_a) {
|
|
206
208
|
var meta = _a[0], data = _a[1];
|
|
207
209
|
previousResults_1 = previousResults_1.concat(data.results);
|
|
208
210
|
});
|
|
209
|
-
|
|
211
|
+
_m.label = 10;
|
|
210
212
|
case 10:
|
|
211
213
|
response.results = __spreadArray(__spreadArray([], previousResults_1, true), (response.results || []), true);
|
|
212
|
-
|
|
214
|
+
_m.label = 11;
|
|
213
215
|
case 11:
|
|
214
216
|
searchProfile.stop();
|
|
215
217
|
this.log.profile(searchProfile);
|
|
216
218
|
afterSearchProfile = this.profiler.create({ type: 'event', name: 'afterSearch', context: params }).start();
|
|
217
|
-
|
|
219
|
+
_m.label = 12;
|
|
218
220
|
case 12:
|
|
219
|
-
|
|
221
|
+
_m.trys.push([12, 14, , 15]);
|
|
220
222
|
return [4 /*yield*/, this.eventManager.fire('afterSearch', {
|
|
221
223
|
controller: this,
|
|
222
224
|
request: params,
|
|
223
225
|
response: response,
|
|
224
226
|
})];
|
|
225
227
|
case 13:
|
|
226
|
-
|
|
228
|
+
_m.sent();
|
|
227
229
|
return [3 /*break*/, 15];
|
|
228
230
|
case 14:
|
|
229
|
-
err_2 =
|
|
231
|
+
err_2 = _m.sent();
|
|
230
232
|
if ((err_2 === null || err_2 === void 0 ? void 0 : err_2.message) == 'cancelled') {
|
|
231
233
|
this.log.warn("'afterSearch' middleware cancelled");
|
|
232
234
|
afterSearchProfile.stop();
|
|
@@ -241,21 +243,22 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
241
243
|
afterSearchProfile.stop();
|
|
242
244
|
this.log.profile(afterSearchProfile);
|
|
243
245
|
// update the store
|
|
246
|
+
// @ts-ignore
|
|
244
247
|
this.store.update(response);
|
|
245
248
|
afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
|
|
246
|
-
|
|
249
|
+
_m.label = 16;
|
|
247
250
|
case 16:
|
|
248
|
-
|
|
251
|
+
_m.trys.push([16, 18, , 19]);
|
|
249
252
|
return [4 /*yield*/, this.eventManager.fire('afterStore', {
|
|
250
253
|
controller: this,
|
|
251
254
|
request: params,
|
|
252
255
|
response: response,
|
|
253
256
|
})];
|
|
254
257
|
case 17:
|
|
255
|
-
|
|
258
|
+
_m.sent();
|
|
256
259
|
return [3 /*break*/, 19];
|
|
257
260
|
case 18:
|
|
258
|
-
err_3 =
|
|
261
|
+
err_3 = _m.sent();
|
|
259
262
|
if ((err_3 === null || err_3 === void 0 ? void 0 : err_3.message) == 'cancelled') {
|
|
260
263
|
this.log.warn("'afterStore' middleware cancelled");
|
|
261
264
|
afterStoreProfile.stop();
|
|
@@ -271,7 +274,7 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
271
274
|
this.log.profile(afterStoreProfile);
|
|
272
275
|
return [3 /*break*/, 21];
|
|
273
276
|
case 20:
|
|
274
|
-
err_4 =
|
|
277
|
+
err_4 = _m.sent();
|
|
275
278
|
if (err_4) {
|
|
276
279
|
switch (err_4) {
|
|
277
280
|
case 429:
|
|
@@ -392,7 +395,7 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
392
395
|
Object.defineProperty(SearchController.prototype, "params", {
|
|
393
396
|
get: function () {
|
|
394
397
|
var _a, _b, _c, _d;
|
|
395
|
-
var params = (0, deepmerge_1.default)(__assign({}, (0, getParams_1.getSearchParams)(this.urlManager.state)), this.config.globals);
|
|
398
|
+
var params = (0, deepmerge_1.default)(__assign({}, (0, getParams_1.getSearchParams)(this.urlManager.state)), this.config.globals || {});
|
|
396
399
|
// redirect setting
|
|
397
400
|
if (!((_b = (_a = this.config.settings) === null || _a === void 0 ? void 0 : _a.redirects) === null || _b === void 0 ? void 0 : _b.merchandising) || this.store.loaded) {
|
|
398
401
|
params.search = params.search || {};
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AbstractController } from './Abstract/AbstractController';
|
|
2
2
|
import type { EventManager, Middleware, Next } from '@searchspring/snap-event-manager';
|
|
3
3
|
import type { Client } from '@searchspring/snap-client';
|
|
4
|
-
import type {
|
|
4
|
+
import type { SearchStore, AutocompleteStore, FinderStore, RecommendationStore, StoreConfig, SearchStoreConfig, FinderStoreConfig, AutocompleteStoreConfig, RecommendationStoreConfig } from '@searchspring/snap-store-mobx';
|
|
5
5
|
import type { Tracker, ProductViewEvent } from '@searchspring/snap-tracker';
|
|
6
6
|
import type { Profiler } from '@searchspring/snap-profiler';
|
|
7
7
|
import type { UrlManager } from '@searchspring/snap-url-manager';
|
|
@@ -12,7 +12,7 @@ declare global {
|
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
export declare type NextEvent = Next;
|
|
15
|
-
export declare type PluginFunction = (cntrlr: AbstractController, ...args: any
|
|
15
|
+
export declare type PluginFunction = (cntrlr: AbstractController, ...args: any) => Promise<void>;
|
|
16
16
|
export declare type PluginGrouping = [func: PluginFunction, ...args: unknown[]];
|
|
17
17
|
export declare type BeforeSearchObj = {
|
|
18
18
|
controller: AbstractController;
|
|
@@ -35,7 +35,7 @@ export declare enum ControllerTypes {
|
|
|
35
35
|
}
|
|
36
36
|
export declare type ControllerServices = {
|
|
37
37
|
client: Client;
|
|
38
|
-
store:
|
|
38
|
+
store: SearchStore | AutocompleteStore | FinderStore | RecommendationStore;
|
|
39
39
|
urlManager: UrlManager;
|
|
40
40
|
eventManager: EventManager;
|
|
41
41
|
profiler: Profiler;
|
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,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kCAAkC,CAAC;AAEvF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EACX,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import type { ImmutableUrlState } from '@searchspring/snap-url-manager';
|
|
2
|
+
export declare function getSearchParams(state: ImmutableUrlState): Record<string, any>;
|
|
2
3
|
//# sourceMappingURL=getParams.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getParams.d.ts","sourceRoot":"","sources":["../../../src/utils/getParams.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getParams.d.ts","sourceRoot":"","sources":["../../../src/utils/getParams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAqCxE,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAgF7E"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LogMode } from '@searchspring/snap-logger';
|
|
2
2
|
import { DomTargeter } from '@searchspring/snap-toolbox';
|
|
3
|
+
import type { Client } from '@searchspring/snap-client';
|
|
3
4
|
import type { AbstractStore } from '@searchspring/snap-store-mobx';
|
|
4
5
|
import type { UrlManager } from '@searchspring/snap-url-manager';
|
|
5
6
|
import type { EventManager, Middleware } from '@searchspring/snap-event-manager';
|
|
@@ -12,7 +13,7 @@ export declare abstract class AbstractController {
|
|
|
12
13
|
id: string;
|
|
13
14
|
type: string;
|
|
14
15
|
config: ControllerConfig;
|
|
15
|
-
client:
|
|
16
|
+
client: Client;
|
|
16
17
|
store: AbstractStore;
|
|
17
18
|
urlManager: UrlManager;
|
|
18
19
|
eventManager: EventManager;
|
|
@@ -27,14 +28,14 @@ export declare abstract class AbstractController {
|
|
|
27
28
|
private _environment;
|
|
28
29
|
get initialized(): boolean;
|
|
29
30
|
constructor(config: ControllerConfig, { client, store, urlManager, eventManager, profiler, logger, tracker }: ControllerServices, context?: ContextVariables);
|
|
30
|
-
createTargeter(target: Target, onTarget: OnTarget, document?: Document): DomTargeter;
|
|
31
|
-
addTargeter(target: DomTargeter): DomTargeter;
|
|
31
|
+
createTargeter(target: Target, onTarget: OnTarget, document?: Document): DomTargeter | undefined;
|
|
32
|
+
addTargeter(target: DomTargeter): DomTargeter | undefined;
|
|
32
33
|
set environment(env: LogMode);
|
|
33
34
|
get environment(): LogMode;
|
|
34
35
|
init(): Promise<void>;
|
|
35
36
|
retarget(): void;
|
|
36
37
|
abstract search(): Promise<void>;
|
|
37
|
-
plugin(func: (cntrlr: AbstractController, ...args: any
|
|
38
|
+
plugin(func: (cntrlr: AbstractController, ...args: any) => Promise<void>, ...args: unknown[]): Promise<void>;
|
|
38
39
|
on<T>(event: string, ...func: Middleware<T>[]): void;
|
|
39
40
|
use(attachments: Attachments): void;
|
|
40
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractController.d.ts","sourceRoot":"","sources":["../../../src/Abstract/AbstractController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAgB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"AbstractController.d.ts","sourceRoot":"","sources":["../../../src/Abstract/AbstractController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAgB,MAAM,4BAA4B,CAAC;AAEvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGpG,8BAAsB,kBAAkB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,SAAc;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC;IAE1B,SAAS,EAAE;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;KAC3B,CAAM;IAEP,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAsB;IAE1C,IAAI,WAAW,IAAI,OAAO,CAEzB;gBAGA,MAAM,EAAE,gBAAgB,EACxB,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,GAAE,gBAAqB;IA2ExB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS;IAIhG,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS;IAShE,IAAW,WAAW,CAAC,GAAG,EAAE,OAAO,EAKlC;IAED,IAAW,WAAW,IAAI,OAAO,CAEhC;IAEY,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+C3B,QAAQ,IAAI,IAAI;aAMP,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAE1B,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlH,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAIpD,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;CAoC1C"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import { StorageStore } from '@searchspring/snap-store-mobx';
|
|
2
3
|
import { AbstractController } from '../Abstract/AbstractController';
|
|
3
4
|
import { ControllerTypes } from '../types';
|
|
4
|
-
import
|
|
5
|
+
import { AutocompleteStore } from '@searchspring/snap-store-mobx';
|
|
5
6
|
import type { AutocompleteControllerConfig, ControllerServices, ContextVariables } from '../types';
|
|
6
7
|
import type { AutocompleteRequestModel } from '@searchspring/snapi-types';
|
|
7
8
|
export declare const INPUT_DELAY = 200;
|
|
8
9
|
declare type AutocompleteTrackMethods = {
|
|
9
10
|
product: {
|
|
10
|
-
click: (e:
|
|
11
|
+
click: (e: MouseEvent, result: any) => void;
|
|
11
12
|
};
|
|
12
13
|
};
|
|
13
14
|
export declare class AutocompleteController extends AbstractController {
|
|
@@ -22,12 +23,12 @@ export declare class AutocompleteController extends AbstractController {
|
|
|
22
23
|
reset(): void;
|
|
23
24
|
handlers: {
|
|
24
25
|
input: {
|
|
25
|
-
enterKey: (e: KeyboardEvent) => Promise<boolean>;
|
|
26
|
+
enterKey: (e: KeyboardEvent) => Promise<boolean | undefined>;
|
|
26
27
|
escKey: (e: KeyboardEvent) => void;
|
|
27
28
|
focus: (e: FocusEvent) => void;
|
|
28
|
-
formSubmit: (e:
|
|
29
|
+
formSubmit: (e: React.FormEvent<HTMLInputElement>) => Promise<void>;
|
|
29
30
|
keyUp: (e: KeyboardEvent) => void;
|
|
30
|
-
timeoutDelay:
|
|
31
|
+
timeoutDelay: NodeJS.Timeout | undefined;
|
|
31
32
|
};
|
|
32
33
|
document: {
|
|
33
34
|
click: (e: MouseEvent) => void;
|
|
@@ -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,
|
|
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,EACX,4BAA4B,EAI5B,kBAAkB,EAElB,gBAAgB,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG1E,eAAO,MAAM,WAAW,MAAM,CAAC;AAoB/B,aAAK,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;IAoD3B,KAAK,EAAE,wBAAwB,CAO7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CA+BrC;IAEK,UAAU,CAAC,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsChE,KAAK,IAAI,IAAI;IASb,QAAQ;;0BAEc,aAAa,KAAG,QAAQ,OAAO,GAAG,SAAS,CAAC;wBA6CpD,aAAa,KAAG,IAAI;uBAMrB,UAAU,KAAG,IAAI;4BAQN,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,QAAQ,IAAI,CAAC;uBA0C5D,aAAa,KAAG,IAAI;;;;uBA8CpB,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAYR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2D3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAsBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAgH9B;CACF"}
|
|
@@ -51,11 +51,11 @@ export class AutocompleteController extends AbstractController {
|
|
|
51
51
|
}
|
|
52
52
|
// use corrected query and originalQuery
|
|
53
53
|
if (this.store.search.originalQuery) {
|
|
54
|
-
input.value = this.store.search.query
|
|
55
|
-
actionUrl = actionUrl
|
|
54
|
+
input.value = this.store.search.query?.string;
|
|
55
|
+
actionUrl = actionUrl?.set(PARAM_ORIGINAL_QUERY, this.store.search.originalQuery.string);
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
actionUrl = actionUrl
|
|
58
|
+
actionUrl = actionUrl?.set('query', input.value);
|
|
59
59
|
// TODO expected spell correct behavior queryAssumption
|
|
60
60
|
try {
|
|
61
61
|
await this.eventManager.fire('beforeSubmit', {
|
|
@@ -73,7 +73,7 @@ export class AutocompleteController extends AbstractController {
|
|
|
73
73
|
console.error(err);
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
|
-
window.location.href = actionUrl
|
|
76
|
+
window.location.href = actionUrl?.href || '';
|
|
77
77
|
}
|
|
78
78
|
},
|
|
79
79
|
escKey: (e) => {
|
|
@@ -102,7 +102,9 @@ export class AutocompleteController extends AbstractController {
|
|
|
102
102
|
await timeout(INPUT_DELAY);
|
|
103
103
|
}
|
|
104
104
|
if (this.store.search.originalQuery) {
|
|
105
|
-
input
|
|
105
|
+
if (input) {
|
|
106
|
+
input.value = this.store.search.query?.string;
|
|
107
|
+
}
|
|
106
108
|
addHiddenFormInput(form, PARAM_ORIGINAL_QUERY, this.store.search.originalQuery.string);
|
|
107
109
|
}
|
|
108
110
|
}
|
|
@@ -139,7 +141,7 @@ export class AutocompleteController extends AbstractController {
|
|
|
139
141
|
return;
|
|
140
142
|
}
|
|
141
143
|
this.store.state.input = value;
|
|
142
|
-
if (this.config
|
|
144
|
+
if (this.config?.settings?.syncInputs) {
|
|
143
145
|
const inputs = document.querySelectorAll(this.config.selector);
|
|
144
146
|
inputs.forEach((input) => {
|
|
145
147
|
input.value = value;
|
|
@@ -220,11 +222,13 @@ export class AutocompleteController extends AbstractController {
|
|
|
220
222
|
}
|
|
221
223
|
const searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
|
|
222
224
|
const [meta, response] = await this.client.autocomplete(params);
|
|
225
|
+
// @ts-ignore
|
|
223
226
|
if (!response.meta) {
|
|
224
227
|
/**
|
|
225
228
|
* MockClient will overwrite the client search() method and use
|
|
226
229
|
* SearchData to return mock data which already contains meta data
|
|
227
230
|
*/
|
|
231
|
+
// @ts-ignore
|
|
228
232
|
response.meta = meta;
|
|
229
233
|
}
|
|
230
234
|
searchProfile.stop();
|
|
@@ -251,6 +255,7 @@ export class AutocompleteController extends AbstractController {
|
|
|
251
255
|
afterSearchProfile.stop();
|
|
252
256
|
this.log.profile(afterSearchProfile);
|
|
253
257
|
// update the store
|
|
258
|
+
// @ts-ignore
|
|
254
259
|
this.store.update(response);
|
|
255
260
|
const afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
|
|
256
261
|
try {
|
|
@@ -433,7 +438,7 @@ export class AutocompleteController extends AbstractController {
|
|
|
433
438
|
input.setAttribute('autocomplete', 'off');
|
|
434
439
|
input.setAttribute(INPUT_ATTRIBUTE, '');
|
|
435
440
|
input.addEventListener('keyup', this.handlers.input.keyUp);
|
|
436
|
-
if (this.config
|
|
441
|
+
if (this.config?.settings?.initializeFromUrl && !input.value && this.store.state.input) {
|
|
437
442
|
input.value = this.store.state.input;
|
|
438
443
|
}
|
|
439
444
|
input.addEventListener('focus', this.handlers.input.focus);
|
|
@@ -461,7 +466,7 @@ export class AutocompleteController extends AbstractController {
|
|
|
461
466
|
this.setFocused(input);
|
|
462
467
|
}
|
|
463
468
|
});
|
|
464
|
-
if (this.config.settings?.trending?.limit > 0 && !this.store.trending?.length) {
|
|
469
|
+
if (this.config.settings?.trending?.limit && this.config.settings?.trending?.limit > 0 && !this.store.trending?.length) {
|
|
465
470
|
this.searchTrending();
|
|
466
471
|
}
|
|
467
472
|
document.addEventListener('click', this.handlers.document.click);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FinderController.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAmC,kBAAkB,EAAa,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiBzI,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;
|
|
1
|
+
{"version":3,"file":"FinderController.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAmC,kBAAkB,EAAa,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiBzI,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;gBAGtC,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA2C3B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAchC;IAED,IAAI,QAAa,QAAQ,IAAI,CAAC,CAe5B;IAEF,KAAK,QAAO,IAAI,CAId;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAoH9B;CACF"}
|
|
@@ -69,12 +69,14 @@ export class FinderController extends AbstractController {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
const searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
|
|
72
|
-
const [meta, response] = await this.client.
|
|
72
|
+
const [meta, response] = await this.client.finder(params);
|
|
73
|
+
// @ts-ignore
|
|
73
74
|
if (!response.meta) {
|
|
74
75
|
/**
|
|
75
76
|
* MockClient will overwrite the client search() method and use
|
|
76
77
|
* SearchData to return mock data which already contains meta data
|
|
77
78
|
*/
|
|
79
|
+
// @ts-ignore
|
|
78
80
|
response.meta = meta;
|
|
79
81
|
}
|
|
80
82
|
searchProfile.stop();
|
|
@@ -101,6 +103,7 @@ export class FinderController extends AbstractController {
|
|
|
101
103
|
afterSearchProfile.stop();
|
|
102
104
|
this.log.profile(afterSearchProfile);
|
|
103
105
|
// update the store
|
|
106
|
+
// @ts-ignore
|
|
104
107
|
this.store.update(response);
|
|
105
108
|
const afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
|
|
106
109
|
try {
|
|
@@ -1,31 +1,45 @@
|
|
|
1
1
|
import { AbstractController } from '../Abstract/AbstractController';
|
|
2
2
|
import { ControllerTypes } from '../types';
|
|
3
|
-
import
|
|
3
|
+
import { BeaconEvent } from '@searchspring/snap-tracker';
|
|
4
4
|
import type { RecommendationStore } from '@searchspring/snap-store-mobx';
|
|
5
5
|
import type { RecommendationControllerConfig, ControllerServices, ContextVariables } from '../types';
|
|
6
6
|
declare type RecommendationTrackMethods = {
|
|
7
7
|
product: {
|
|
8
|
-
click: (e:
|
|
9
|
-
render: (result: any) => BeaconEvent;
|
|
10
|
-
impression: (result: any) => BeaconEvent;
|
|
8
|
+
click: (e: MouseEvent, result: any) => BeaconEvent | undefined;
|
|
9
|
+
render: (result: any) => BeaconEvent | undefined;
|
|
10
|
+
impression: (result: any) => BeaconEvent | undefined;
|
|
11
11
|
};
|
|
12
|
-
click: (e:
|
|
13
|
-
impression: () => BeaconEvent;
|
|
14
|
-
render: () => BeaconEvent;
|
|
12
|
+
click: (e: MouseEvent) => BeaconEvent | undefined;
|
|
13
|
+
impression: () => BeaconEvent | undefined;
|
|
14
|
+
render: () => BeaconEvent | undefined;
|
|
15
|
+
};
|
|
16
|
+
declare type RecommendCombinedRequestModel = {
|
|
17
|
+
tag: string;
|
|
18
|
+
siteId: string;
|
|
19
|
+
product?: string;
|
|
20
|
+
shopper?: string;
|
|
21
|
+
categories?: string[];
|
|
22
|
+
cart?: string[];
|
|
23
|
+
lastViewed?: string[];
|
|
24
|
+
test?: boolean;
|
|
25
|
+
branch?: string;
|
|
15
26
|
};
|
|
16
27
|
export declare class RecommendationController extends AbstractController {
|
|
17
28
|
type: ControllerTypes;
|
|
18
29
|
store: RecommendationStore;
|
|
19
30
|
config: RecommendationControllerConfig;
|
|
20
31
|
events: {
|
|
21
|
-
click
|
|
22
|
-
impression
|
|
23
|
-
render
|
|
24
|
-
product
|
|
32
|
+
click?: BeaconEvent;
|
|
33
|
+
impression?: BeaconEvent;
|
|
34
|
+
render?: BeaconEvent;
|
|
35
|
+
product?: Record<string, {
|
|
36
|
+
impression?: BeaconEvent;
|
|
37
|
+
render?: BeaconEvent;
|
|
38
|
+
}>;
|
|
25
39
|
};
|
|
26
40
|
constructor(config: RecommendationControllerConfig, { client, store, urlManager, eventManager, profiler, logger, tracker }: ControllerServices, context?: ContextVariables);
|
|
27
41
|
track: RecommendationTrackMethods;
|
|
28
|
-
get params():
|
|
42
|
+
get params(): RecommendCombinedRequestModel;
|
|
29
43
|
search: () => Promise<void>;
|
|
30
44
|
}
|
|
31
45
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,
|
|
1
|
+
{"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,8BAA8B,EAAkC,kBAAkB,EAAa,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEhJ,aAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QAC/D,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QACjD,UAAU,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KACrD,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,WAAW,GAAG,SAAS,CAAC;IAClD,UAAU,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,aAAK,6BAA6B,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,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;IA8B3B,KAAK,EAAE,0BAA0B,CAqK/B;IAEF,IAAI,MAAM,IAAI,6BAA6B,CA0B1C;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAqG9B;CACF"}
|
|
@@ -16,9 +16,9 @@ export class RecommendationController extends AbstractController {
|
|
|
16
16
|
super(config, { client, store, urlManager, eventManager, profiler, logger, tracker }, context);
|
|
17
17
|
this.type = ControllerTypes.recommendation;
|
|
18
18
|
this.events = {
|
|
19
|
-
click:
|
|
20
|
-
impression:
|
|
21
|
-
render:
|
|
19
|
+
click: undefined,
|
|
20
|
+
impression: undefined,
|
|
21
|
+
render: undefined,
|
|
22
22
|
product: {},
|
|
23
23
|
};
|
|
24
24
|
this.track = {
|
|
@@ -29,7 +29,7 @@ export class RecommendationController extends AbstractController {
|
|
|
29
29
|
const payload = {
|
|
30
30
|
type: BeaconType.PROFILE_PRODUCT_CLICK,
|
|
31
31
|
category: BeaconCategory.RECOMMENDATIONS,
|
|
32
|
-
context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } :
|
|
32
|
+
context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : undefined,
|
|
33
33
|
event: {
|
|
34
34
|
context: {
|
|
35
35
|
action: 'navigate',
|
|
@@ -52,12 +52,12 @@ export class RecommendationController extends AbstractController {
|
|
|
52
52
|
return event;
|
|
53
53
|
},
|
|
54
54
|
impression: (result) => {
|
|
55
|
-
if (!this.store.profile.tag || !result || !this.events.impression || this.events.product[result.id]?.impression)
|
|
55
|
+
if (!this.store.profile.tag || !result || !this.events.impression || (this.events.product && this.events.product[result.id]?.impression))
|
|
56
56
|
return;
|
|
57
57
|
const payload = {
|
|
58
58
|
type: BeaconType.PROFILE_PRODUCT_IMPRESSION,
|
|
59
59
|
category: BeaconCategory.RECOMMENDATIONS,
|
|
60
|
-
context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } :
|
|
60
|
+
context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : undefined,
|
|
61
61
|
event: {
|
|
62
62
|
context: {
|
|
63
63
|
placement: this.store.profile.placement,
|
|
@@ -85,7 +85,7 @@ export class RecommendationController extends AbstractController {
|
|
|
85
85
|
const payload = {
|
|
86
86
|
type: BeaconType.PROFILE_PRODUCT_RENDER,
|
|
87
87
|
category: BeaconCategory.RECOMMENDATIONS,
|
|
88
|
-
context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } :
|
|
88
|
+
context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : undefined,
|
|
89
89
|
event: {
|
|
90
90
|
context: {
|
|
91
91
|
placement: this.store.profile.placement,
|
|
@@ -114,7 +114,7 @@ export class RecommendationController extends AbstractController {
|
|
|
114
114
|
const event = this.tracker.track.event({
|
|
115
115
|
type: BeaconType.PROFILE_CLICK,
|
|
116
116
|
category: BeaconCategory.RECOMMENDATIONS,
|
|
117
|
-
context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } :
|
|
117
|
+
context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : undefined,
|
|
118
118
|
event: {
|
|
119
119
|
context: {
|
|
120
120
|
action: 'navigate',
|
|
@@ -140,7 +140,7 @@ export class RecommendationController extends AbstractController {
|
|
|
140
140
|
const event = this.tracker.track.event({
|
|
141
141
|
type: BeaconType.PROFILE_IMPRESSION,
|
|
142
142
|
category: BeaconCategory.RECOMMENDATIONS,
|
|
143
|
-
context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } :
|
|
143
|
+
context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : undefined,
|
|
144
144
|
event: {
|
|
145
145
|
context: {
|
|
146
146
|
placement: this.store.profile.placement,
|
|
@@ -165,7 +165,7 @@ export class RecommendationController extends AbstractController {
|
|
|
165
165
|
const event = this.tracker.track.event({
|
|
166
166
|
type: BeaconType.PROFILE_RENDER,
|
|
167
167
|
category: BeaconCategory.RECOMMENDATIONS,
|
|
168
|
-
context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } :
|
|
168
|
+
context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : undefined,
|
|
169
169
|
event: {
|
|
170
170
|
context: {
|
|
171
171
|
placement: this.store.profile.placement,
|
|
@@ -309,6 +309,7 @@ export class RecommendationController extends AbstractController {
|
|
|
309
309
|
tag: this.config.tag,
|
|
310
310
|
batched: this.config.batched,
|
|
311
311
|
branch: this.config.branch || 'production',
|
|
312
|
+
order: this.context?.options?.order,
|
|
312
313
|
...this.config.globals,
|
|
313
314
|
};
|
|
314
315
|
const shopperId = this.tracker.context.shopperId;
|
|
@@ -7,7 +7,7 @@ import type { SearchControllerConfig, ControllerServices, ContextVariables } fro
|
|
|
7
7
|
import type { SearchRequestModel } from '@searchspring/snapi-types';
|
|
8
8
|
declare type SearchTrackMethods = {
|
|
9
9
|
product: {
|
|
10
|
-
click: (e:
|
|
10
|
+
click: (e: MouseEvent, result: any) => BeaconEvent | undefined;
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
13
|
export declare class SearchController extends AbstractController {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAEA,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,EAElB,gBAAgB,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,kBAAkB,EAAgD,MAAM,2BAA2B,CAAC;AAoBlH,aAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAEA,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,EAElB,gBAAgB,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,kBAAkB,EAAgD,MAAM,2BAA2B,CAAC;AAoBlH,aAAK,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;gBAGrB,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;IAkF3B,KAAK,EAAE,kBAAkB,CA0BvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAsC/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA0J9B;CACF"}
|