@searchspring/snap-controller 0.43.1 → 0.44.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.d.ts +3 -1
- package/dist/cjs/Abstract/AbstractController.d.ts.map +1 -1
- package/dist/cjs/Abstract/AbstractController.js +12 -4
- package/dist/cjs/Autocomplete/AutocompleteController.d.ts.map +1 -1
- package/dist/cjs/Autocomplete/AutocompleteController.js +44 -34
- package/dist/cjs/Finder/FinderController.d.ts.map +1 -1
- package/dist/cjs/Finder/FinderController.js +36 -21
- package/dist/cjs/Recommendation/RecommendationController.d.ts.map +1 -1
- package/dist/cjs/Recommendation/RecommendationController.js +36 -21
- package/dist/cjs/Search/SearchController.d.ts +1 -0
- package/dist/cjs/Search/SearchController.d.ts.map +1 -1
- package/dist/cjs/Search/SearchController.js +81 -39
- package/dist/cjs/types.d.ts +3 -3
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/esm/Abstract/AbstractController.d.ts +3 -1
- package/dist/esm/Abstract/AbstractController.d.ts.map +1 -1
- package/dist/esm/Abstract/AbstractController.js +12 -4
- package/dist/esm/Autocomplete/AutocompleteController.d.ts.map +1 -1
- package/dist/esm/Autocomplete/AutocompleteController.js +44 -34
- package/dist/esm/Finder/FinderController.d.ts.map +1 -1
- package/dist/esm/Finder/FinderController.js +36 -21
- package/dist/esm/Recommendation/RecommendationController.d.ts.map +1 -1
- package/dist/esm/Recommendation/RecommendationController.js +36 -21
- package/dist/esm/Search/SearchController.d.ts +1 -0
- package/dist/esm/Search/SearchController.d.ts.map +1 -1
- package/dist/esm/Search/SearchController.js +79 -38
- package/dist/esm/types.d.ts +3 -3
- package/dist/esm/types.d.ts.map +1 -1
- package/package.json +11 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractController.d.ts","sourceRoot":"","sources":["../../../src/Abstract/AbstractController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,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,EAAmB,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEpH,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,SAAS,CAAC,YAAY,UAAS;IAE/B,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEM,WAAW,QAAS,OAAO,
|
|
1
|
+
{"version":3,"file":"AbstractController.d.ts","sourceRoot":"","sources":["../../../src/Abstract/AbstractController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,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,EAAmB,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEpH,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,SAAS,CAAC,YAAY,UAAS;IAE/B,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEM,WAAW,QAAS,OAAO;;sBAAyC,IAAI,CAoD7E;gBAGD,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;IA2DxB,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;IASnD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgD3B,QAAQ,IAAI,IAAI;aAMP,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAE1B,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,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"}
|
|
@@ -4,7 +4,7 @@ export class AbstractController {
|
|
|
4
4
|
this.type = 'abstract';
|
|
5
5
|
this.targeters = {};
|
|
6
6
|
this._initialized = false;
|
|
7
|
-
this.handleError = (err) => {
|
|
7
|
+
this.handleError = (err, details) => {
|
|
8
8
|
let event;
|
|
9
9
|
if (err instanceof ErrorEvent) {
|
|
10
10
|
event = err;
|
|
@@ -12,11 +12,12 @@ export class AbstractController {
|
|
|
12
12
|
else if (err instanceof Error) {
|
|
13
13
|
event = new ErrorEvent('error', {
|
|
14
14
|
error: err,
|
|
15
|
+
message: err.message,
|
|
15
16
|
});
|
|
16
17
|
}
|
|
17
|
-
else if (typeof err === 'string') {
|
|
18
|
+
else if (typeof err === 'string' || typeof err == 'number') {
|
|
18
19
|
event = new ErrorEvent('error', {
|
|
19
|
-
error: new Error(err),
|
|
20
|
+
error: new Error(err.toString()),
|
|
20
21
|
});
|
|
21
22
|
}
|
|
22
23
|
else if (typeof err === 'object' && Object.keys(err).length) {
|
|
@@ -30,12 +31,19 @@ export class AbstractController {
|
|
|
30
31
|
if (event) {
|
|
31
32
|
const { filename, colno, lineno, error: { stack }, message, timeStamp, } = event;
|
|
32
33
|
const beaconPayload = {
|
|
33
|
-
filename
|
|
34
|
+
filename,
|
|
34
35
|
stack,
|
|
35
36
|
message,
|
|
36
37
|
colno,
|
|
37
38
|
lineno,
|
|
38
39
|
errortimestamp: timeStamp,
|
|
40
|
+
details,
|
|
41
|
+
context: {
|
|
42
|
+
controller: {
|
|
43
|
+
id: this.id,
|
|
44
|
+
type: this.type,
|
|
45
|
+
},
|
|
46
|
+
},
|
|
39
47
|
};
|
|
40
48
|
this.tracker.track.error(beaconPayload);
|
|
41
49
|
this.eventManager.fire('error', { controller: this, error: err });
|
|
@@ -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;AA0B/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;IA6D3B,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,aAAa,KAAG,IAAI;;;;
|
|
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;AA0B/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;IA6D3B,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,aAAa,KAAG,IAAI;;;;uBAwDpB,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"}
|
|
@@ -56,9 +56,9 @@ export class AutocompleteController extends AbstractController {
|
|
|
56
56
|
await timeout(INPUT_DELAY);
|
|
57
57
|
}
|
|
58
58
|
if (this.config.settings.integratedSpellCorrection) {
|
|
59
|
-
//
|
|
60
|
-
if (
|
|
61
|
-
actionUrl = actionUrl?.set(PARAM_FALLBACK_QUERY, this.store.
|
|
59
|
+
//set fallbackQuery to the correctedQuery
|
|
60
|
+
if (this.store.search.correctedQuery) {
|
|
61
|
+
actionUrl = actionUrl?.set(PARAM_FALLBACK_QUERY, this.store.search.correctedQuery.string);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
else if (this.store.search.originalQuery) {
|
|
@@ -114,9 +114,9 @@ export class AutocompleteController extends AbstractController {
|
|
|
114
114
|
await timeout(INPUT_DELAY);
|
|
115
115
|
}
|
|
116
116
|
if (this.config.settings.integratedSpellCorrection) {
|
|
117
|
-
//
|
|
118
|
-
if (
|
|
119
|
-
addHiddenFormInput(form, PARAM_FALLBACK_QUERY, this.store.
|
|
117
|
+
//set fallbackQuery to the correctedQuery
|
|
118
|
+
if (this.store.search.correctedQuery) {
|
|
119
|
+
addHiddenFormInput(form, PARAM_FALLBACK_QUERY, this.store.search.correctedQuery.string);
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
else if (this.store.search.originalQuery) {
|
|
@@ -188,10 +188,10 @@ export class AutocompleteController extends AbstractController {
|
|
|
188
188
|
clearTimeout(this.handlers.input.timeoutDelay);
|
|
189
189
|
const trendingResultsEnabled = this.store.trending?.length && this.config.settings?.trending?.showResults;
|
|
190
190
|
const historyResultsEnabled = this.store.history?.length && this.config.settings?.history?.showResults;
|
|
191
|
+
this.urlManager.reset().go();
|
|
191
192
|
if (!value) {
|
|
192
|
-
// there is no input value - reset state of store
|
|
193
|
+
// there is no input value - reset state of store
|
|
193
194
|
this.store.reset();
|
|
194
|
-
this.urlManager.reset().go();
|
|
195
195
|
// show results for trending or history (if configured) - trending has priority
|
|
196
196
|
if (trendingResultsEnabled) {
|
|
197
197
|
this.store.trending[0].preview();
|
|
@@ -202,14 +202,9 @@ export class AutocompleteController extends AbstractController {
|
|
|
202
202
|
}
|
|
203
203
|
else {
|
|
204
204
|
// new query in the input - trigger a new search via UrlManager
|
|
205
|
-
this.store.resetTerms();
|
|
206
205
|
this.handlers.input.timeoutDelay = setTimeout(() => {
|
|
207
206
|
this.store.state.locks.terms.unlock();
|
|
208
207
|
this.store.state.locks.facets.unlock();
|
|
209
|
-
// must reset query to ensure funcitonality when trending/history term is equal to the typed term
|
|
210
|
-
if (trendingResultsEnabled || historyResultsEnabled) {
|
|
211
|
-
this.urlManager.set({ query: '' }).go();
|
|
212
|
-
}
|
|
213
208
|
this.urlManager.set({ query: this.store.state.input }).go();
|
|
214
209
|
}, INPUT_DELAY);
|
|
215
210
|
}
|
|
@@ -333,29 +328,44 @@ export class AutocompleteController extends AbstractController {
|
|
|
333
328
|
}
|
|
334
329
|
catch (err) {
|
|
335
330
|
if (err) {
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
331
|
+
if (err.err && err.fetchDetails) {
|
|
332
|
+
switch (err.fetchDetails.status) {
|
|
333
|
+
case 429: {
|
|
334
|
+
this.store.error = {
|
|
335
|
+
code: 429,
|
|
336
|
+
type: ErrorType.WARNING,
|
|
337
|
+
message: 'Too many requests try again later',
|
|
338
|
+
};
|
|
339
|
+
break;
|
|
340
|
+
}
|
|
341
|
+
case 500: {
|
|
342
|
+
this.store.error = {
|
|
343
|
+
code: 500,
|
|
344
|
+
type: ErrorType.ERROR,
|
|
345
|
+
message: 'Invalid Search Request or Service Unavailable',
|
|
346
|
+
};
|
|
347
|
+
break;
|
|
348
|
+
}
|
|
349
|
+
default: {
|
|
350
|
+
this.store.error = {
|
|
351
|
+
type: ErrorType.ERROR,
|
|
352
|
+
message: err.err.message,
|
|
353
|
+
};
|
|
354
|
+
break;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
this.log.error(this.store.error);
|
|
358
|
+
this.handleError(err.err, err.fetchDetails);
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
this.store.error = {
|
|
362
|
+
type: ErrorType.ERROR,
|
|
363
|
+
message: `Something went wrong... - ${err}`,
|
|
364
|
+
};
|
|
365
|
+
this.log.error(err);
|
|
366
|
+
this.handleError(err);
|
|
356
367
|
}
|
|
357
368
|
this.store.loading = false;
|
|
358
|
-
this.handleError(err);
|
|
359
369
|
}
|
|
360
370
|
}
|
|
361
371
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FinderController.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAmC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiB9H,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,CA+BhC;IAED,IAAI,QAAa,QAAQ,IAAI,CAAC,CAe5B;IAEF,KAAK,QAAO,IAAI,CAId;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"FinderController.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAmC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiB9H,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,CA+BhC;IAED,IAAI,QAAa,QAAQ,IAAI,CAAC,CAe5B;IAEF,KAAK,QAAO,IAAI,CAId;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAkI9B;CACF"}
|
|
@@ -125,29 +125,44 @@ export class FinderController extends AbstractController {
|
|
|
125
125
|
}
|
|
126
126
|
catch (err) {
|
|
127
127
|
if (err) {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
128
|
+
if (err.err && err.fetchDetails) {
|
|
129
|
+
switch (err.fetchDetails.status) {
|
|
130
|
+
case 429: {
|
|
131
|
+
this.store.error = {
|
|
132
|
+
code: 429,
|
|
133
|
+
type: ErrorType.WARNING,
|
|
134
|
+
message: 'Too many requests try again later',
|
|
135
|
+
};
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
case 500: {
|
|
139
|
+
this.store.error = {
|
|
140
|
+
code: 500,
|
|
141
|
+
type: ErrorType.ERROR,
|
|
142
|
+
message: 'Invalid Search Request or Service Unavailable',
|
|
143
|
+
};
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
default: {
|
|
147
|
+
this.store.error = {
|
|
148
|
+
type: ErrorType.ERROR,
|
|
149
|
+
message: err.err.message,
|
|
150
|
+
};
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
this.log.error(this.store.error);
|
|
155
|
+
this.handleError(err.err, err.fetchDetails);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
this.store.error = {
|
|
159
|
+
type: ErrorType.ERROR,
|
|
160
|
+
message: `Something went wrong... - ${err}`,
|
|
161
|
+
};
|
|
162
|
+
this.log.error(err);
|
|
163
|
+
this.handleError(err);
|
|
148
164
|
}
|
|
149
165
|
this.store.loading = false;
|
|
150
|
-
this.handleError(err);
|
|
151
166
|
}
|
|
152
167
|
}
|
|
153
168
|
};
|
|
@@ -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,8BAA8B,EAAkC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErI,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,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,WAAW,GAAG,SAAS,CAAC;CACzD,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,CAiM5B;IAEL,IAAI,MAAM,IAAI,6BAA6B,CA0B1C;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,
|
|
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,8BAA8B,EAAkC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErI,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,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,WAAW,GAAG,SAAS,CAAC;CACzD,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,CAiM5B;IAEL,IAAI,MAAM,IAAI,6BAA6B,CA0B1C;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAuH9B;CACF"}
|
|
@@ -284,29 +284,44 @@ export class RecommendationController extends AbstractController {
|
|
|
284
284
|
}
|
|
285
285
|
catch (err) {
|
|
286
286
|
if (err) {
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
287
|
+
if (err.err && err.fetchDetails) {
|
|
288
|
+
switch (err.fetchDetails.status) {
|
|
289
|
+
case 429: {
|
|
290
|
+
this.store.error = {
|
|
291
|
+
code: 429,
|
|
292
|
+
type: ErrorType.WARNING,
|
|
293
|
+
message: 'Too many requests try again later',
|
|
294
|
+
};
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
297
|
+
case 500: {
|
|
298
|
+
this.store.error = {
|
|
299
|
+
code: 500,
|
|
300
|
+
type: ErrorType.ERROR,
|
|
301
|
+
message: 'Invalid Search Request or Service Unavailable',
|
|
302
|
+
};
|
|
303
|
+
break;
|
|
304
|
+
}
|
|
305
|
+
default: {
|
|
306
|
+
this.store.error = {
|
|
307
|
+
type: ErrorType.ERROR,
|
|
308
|
+
message: err.err.message,
|
|
309
|
+
};
|
|
310
|
+
break;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
this.log.error(this.store.error);
|
|
314
|
+
this.handleError(err.err, err.fetchDetails);
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
this.store.error = {
|
|
318
|
+
type: ErrorType.ERROR,
|
|
319
|
+
message: `Something went wrong... - ${err}`,
|
|
320
|
+
};
|
|
321
|
+
this.log.error(err);
|
|
322
|
+
this.handleError(err);
|
|
307
323
|
}
|
|
308
324
|
this.store.loading = false;
|
|
309
|
-
this.handleError(err);
|
|
310
325
|
}
|
|
311
326
|
}
|
|
312
327
|
};
|
|
@@ -22,5 +22,6 @@ export declare class SearchController extends AbstractController {
|
|
|
22
22
|
search: () => Promise<void>;
|
|
23
23
|
}
|
|
24
24
|
export declare function getStorableRequestParams(request: SearchRequestModel): SearchRequestModel;
|
|
25
|
+
export declare function generateHrefSelector(element: HTMLElement, href: string, levels?: number): string | undefined;
|
|
25
26
|
export {};
|
|
26
27
|
//# sourceMappingURL=SearchController.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"
|
|
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,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;AAqB7I,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;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;IA2I3B,KAAK,EAAE,kBAAkB,CA8CvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAgD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAwO9B;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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import deepmerge from 'deepmerge';
|
|
2
|
+
import cssEscape from 'css.escape';
|
|
2
3
|
import { AbstractController } from '../Abstract/AbstractController';
|
|
3
4
|
import { StorageStore, StorageType, ErrorType } from '@searchspring/snap-store-mobx';
|
|
4
5
|
import { getSearchParams } from '../utils/getParams';
|
|
@@ -29,17 +30,26 @@ export class SearchController extends AbstractController {
|
|
|
29
30
|
product: {
|
|
30
31
|
click: (e, result) => {
|
|
31
32
|
const target = e.target;
|
|
32
|
-
const
|
|
33
|
+
const resultHref = result.mappings.core?.url;
|
|
34
|
+
const elemHref = target?.getAttribute('href');
|
|
35
|
+
// the href that should be used for restoration - if the elemHref contains the resultHref - use resultHref
|
|
36
|
+
const storedHref = elemHref?.indexOf(resultHref) != -1 ? resultHref : elemHref || resultHref;
|
|
33
37
|
const scrollMap = {};
|
|
34
38
|
// generate the selector using element class and parent classes
|
|
35
|
-
const selector = generateHrefSelector(target,
|
|
39
|
+
const selector = generateHrefSelector(target, storedHref);
|
|
36
40
|
const domRect = selector ? document?.querySelector(selector)?.getBoundingClientRect() : undefined;
|
|
37
41
|
// store element position data to scrollMap
|
|
38
|
-
if (selector
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
if (selector || storedHref || domRect) {
|
|
43
|
+
try {
|
|
44
|
+
const stringyParams = JSON.parse(this.storage.get('lastStringyParams'));
|
|
45
|
+
const storableRequestParams = getStorableRequestParams(stringyParams);
|
|
46
|
+
const storableStringyParams = JSON.stringify(storableRequestParams);
|
|
47
|
+
scrollMap[storableStringyParams] = { domRect, href: storedHref, selector };
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
// failed to get lastStringParams
|
|
51
|
+
this.log.warn('Failed to save scollMap!', err);
|
|
52
|
+
}
|
|
43
53
|
}
|
|
44
54
|
// store position data or empty object
|
|
45
55
|
this.storage.set('scrollMap', scrollMap);
|
|
@@ -48,7 +58,7 @@ export class SearchController extends AbstractController {
|
|
|
48
58
|
const event = this.tracker.track.product.click({
|
|
49
59
|
intellisuggestData,
|
|
50
60
|
intellisuggestSignature,
|
|
51
|
-
href,
|
|
61
|
+
href: elemHref || resultHref,
|
|
52
62
|
});
|
|
53
63
|
this.eventManager.fire('track.product.click', { controller: this, event: e, result, trackEvent: event });
|
|
54
64
|
return event;
|
|
@@ -224,29 +234,44 @@ export class SearchController extends AbstractController {
|
|
|
224
234
|
}
|
|
225
235
|
catch (err) {
|
|
226
236
|
if (err) {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
237
|
+
if (err.err && err.fetchDetails) {
|
|
238
|
+
switch (err.fetchDetails.status) {
|
|
239
|
+
case 429: {
|
|
240
|
+
this.store.error = {
|
|
241
|
+
code: 429,
|
|
242
|
+
type: ErrorType.WARNING,
|
|
243
|
+
message: 'Too many requests try again later',
|
|
244
|
+
};
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
case 500: {
|
|
248
|
+
this.store.error = {
|
|
249
|
+
code: 500,
|
|
250
|
+
type: ErrorType.ERROR,
|
|
251
|
+
message: 'Invalid Search Request or Service Unavailable',
|
|
252
|
+
};
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
default: {
|
|
256
|
+
this.store.error = {
|
|
257
|
+
type: ErrorType.ERROR,
|
|
258
|
+
message: err.err.message,
|
|
259
|
+
};
|
|
260
|
+
break;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
this.log.error(this.store.error);
|
|
264
|
+
this.handleError(err.err, err.fetchDetails);
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
this.store.error = {
|
|
268
|
+
type: ErrorType.ERROR,
|
|
269
|
+
message: `Something went wrong... - ${err}`,
|
|
270
|
+
};
|
|
271
|
+
this.log.error(err);
|
|
272
|
+
this.handleError(err);
|
|
247
273
|
}
|
|
248
274
|
this.store.loading = false;
|
|
249
|
-
this.handleError(err);
|
|
250
275
|
}
|
|
251
276
|
}
|
|
252
277
|
};
|
|
@@ -313,15 +338,21 @@ export class SearchController extends AbstractController {
|
|
|
313
338
|
const maxCheckTime = 500;
|
|
314
339
|
const checkTime = 50;
|
|
315
340
|
const maxScrolls = Math.ceil(maxCheckTime / checkTime);
|
|
316
|
-
const maxCheckCount = maxScrolls +
|
|
341
|
+
const maxCheckCount = maxScrolls + 2;
|
|
317
342
|
let scrollBackCount = 0;
|
|
343
|
+
let checkCount = 0;
|
|
318
344
|
let scrolledElem = undefined;
|
|
319
345
|
const checkAndScroll = () => {
|
|
320
346
|
const elem = document.querySelector(element?.selector);
|
|
321
|
-
if (elem)
|
|
347
|
+
if (elem) {
|
|
322
348
|
scrollBackCount++;
|
|
323
|
-
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
checkCount++;
|
|
352
|
+
}
|
|
353
|
+
if (elem) {
|
|
324
354
|
const { y } = elem.getBoundingClientRect();
|
|
355
|
+
// if the offset is off, we need to scroll into position (can be caused by lazy loaded images)
|
|
325
356
|
if (y > offset + 1 || y < offset - 1) {
|
|
326
357
|
elem.scrollIntoView();
|
|
327
358
|
// after scrolling into view, use top value with offset (for when element at bottom)
|
|
@@ -333,7 +364,7 @@ export class SearchController extends AbstractController {
|
|
|
333
364
|
}
|
|
334
365
|
return false;
|
|
335
366
|
};
|
|
336
|
-
while (checkAndScroll() || scrollBackCount <= maxScrolls) {
|
|
367
|
+
while (checkAndScroll() || (scrollBackCount <= maxScrolls && checkCount <= maxCheckCount)) {
|
|
337
368
|
await new Promise((resolve) => setTimeout(resolve, checkTime));
|
|
338
369
|
}
|
|
339
370
|
if (scrolledElem) {
|
|
@@ -412,14 +443,24 @@ export function getStorableRequestParams(request) {
|
|
|
412
443
|
},
|
|
413
444
|
};
|
|
414
445
|
}
|
|
415
|
-
function generateHrefSelector(element, href, levels = 7) {
|
|
446
|
+
export function generateHrefSelector(element, href, levels = 7) {
|
|
416
447
|
let level = 0;
|
|
417
448
|
let elem = element;
|
|
418
|
-
while (elem && level
|
|
449
|
+
while (elem && level <= levels) {
|
|
419
450
|
// check within
|
|
420
|
-
const
|
|
421
|
-
if (
|
|
422
|
-
|
|
451
|
+
const innerHrefElem = elem.querySelector(`[href*="${href}"]`);
|
|
452
|
+
if (innerHrefElem) {
|
|
453
|
+
// innerHrefElem was found! now get selectors up to elem that contained it
|
|
454
|
+
let selector = '';
|
|
455
|
+
let parentElem = innerHrefElem;
|
|
456
|
+
while (parentElem && parentElem != elem.parentElement) {
|
|
457
|
+
const classNames = parentElem.classList.value.trim().split(' ');
|
|
458
|
+
// document.querySelector does not appreciate special characters - must escape them
|
|
459
|
+
const escapedClassSelector = classNames.reduce((classes, classname) => (classname.trim() ? `${classes}.${cssEscape(classname.trim())}` : classes), '');
|
|
460
|
+
selector = `${parentElem.tagName}${escapedClassSelector}${selector ? ` ${selector}` : ''}`;
|
|
461
|
+
parentElem = parentElem.parentElement;
|
|
462
|
+
}
|
|
463
|
+
return `${selector}[href*="${href}"]`;
|
|
423
464
|
}
|
|
424
465
|
elem = elem.parentElement;
|
|
425
466
|
level++;
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -28,9 +28,9 @@ export declare type RestorePositionObj = {
|
|
|
28
28
|
element?: ElementPositionObj;
|
|
29
29
|
};
|
|
30
30
|
export declare type ElementPositionObj = {
|
|
31
|
-
href
|
|
32
|
-
selector
|
|
33
|
-
domRect
|
|
31
|
+
href?: string;
|
|
32
|
+
selector?: string;
|
|
33
|
+
domRect?: DOMRect;
|
|
34
34
|
};
|
|
35
35
|
export declare enum ControllerTypes {
|
|
36
36
|
search = "search",
|
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,oBAAY,cAAc,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAChG,oBAAY,cAAc,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAExE,oBAAY,eAAe,GAAG;IAC7B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,oBAAY,cAAc,GAAG;IAC5B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,EAAE,kBAAkB,CAAC;CAC5B,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC3B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,GAAG,CAAC;IACb,QAAQ,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,oBAAY,kBAAkB,GAAG;IAChC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF,oBAAY,kBAAkB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;
|
|
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.44.1",
|
|
4
4
|
"description": "Snap Controllers",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -20,21 +20,22 @@
|
|
|
20
20
|
"test:watch": "jest --watch"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@searchspring/snap-toolbox": "^0.
|
|
23
|
+
"@searchspring/snap-toolbox": "^0.44.1",
|
|
24
|
+
"css.escape": "1.5.1",
|
|
24
25
|
"deepmerge": "4.3.1"
|
|
25
26
|
},
|
|
26
27
|
"devDependencies": {
|
|
27
|
-
"@searchspring/snap-client": "^0.
|
|
28
|
-
"@searchspring/snap-event-manager": "^0.
|
|
29
|
-
"@searchspring/snap-logger": "^0.
|
|
30
|
-
"@searchspring/snap-profiler": "^0.
|
|
31
|
-
"@searchspring/snap-store-mobx": "^0.
|
|
32
|
-
"@searchspring/snap-tracker": "^0.
|
|
33
|
-
"@searchspring/snap-url-manager": "^0.
|
|
28
|
+
"@searchspring/snap-client": "^0.44.1",
|
|
29
|
+
"@searchspring/snap-event-manager": "^0.44.1",
|
|
30
|
+
"@searchspring/snap-logger": "^0.44.1",
|
|
31
|
+
"@searchspring/snap-profiler": "^0.44.1",
|
|
32
|
+
"@searchspring/snap-store-mobx": "^0.44.1",
|
|
33
|
+
"@searchspring/snap-tracker": "^0.44.1",
|
|
34
|
+
"@searchspring/snap-url-manager": "^0.44.1"
|
|
34
35
|
},
|
|
35
36
|
"sideEffects": false,
|
|
36
37
|
"files": [
|
|
37
38
|
"dist/**/*"
|
|
38
39
|
],
|
|
39
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "6cfb38b3c9e11971e2b0f771ba038e1e6a037f48"
|
|
40
41
|
}
|