@searchspring/snap-controller 0.44.3 → 0.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -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,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;
|
|
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;IA8I3B,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"}
|
|
@@ -484,12 +484,10 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
484
484
|
case 0:
|
|
485
485
|
scrollToPosition = function () {
|
|
486
486
|
return new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
|
|
487
|
-
var
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
switch (_b.label) {
|
|
487
|
+
var maxCheckTime, checkTime, maxScrolls, maxCheckCount, scrollBackCount, checkCount, scrolledElem, checkAndScroll;
|
|
488
|
+
return __generator(this, function (_a) {
|
|
489
|
+
switch (_a.label) {
|
|
491
490
|
case 0:
|
|
492
|
-
offset = ((_a = element === null || element === void 0 ? void 0 : element.domRect) === null || _a === void 0 ? void 0 : _a.top) || 0;
|
|
493
491
|
maxCheckTime = 500;
|
|
494
492
|
checkTime = 50;
|
|
495
493
|
maxScrolls = Math.ceil(maxCheckTime / checkTime);
|
|
@@ -498,40 +496,45 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
498
496
|
checkCount = 0;
|
|
499
497
|
scrolledElem = undefined;
|
|
500
498
|
checkAndScroll = function () {
|
|
499
|
+
var _a;
|
|
500
|
+
var offset = ((_a = element === null || element === void 0 ? void 0 : element.domRect) === null || _a === void 0 ? void 0 : _a.top) || 0;
|
|
501
501
|
var elem = document.querySelector(element === null || element === void 0 ? void 0 : element.selector);
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
502
|
+
// for case where the element clicked on has no height
|
|
503
|
+
while (elem && !elem.getBoundingClientRect().height) {
|
|
504
|
+
elem = elem.parentElement;
|
|
505
|
+
// original offset no longer applies since using different element
|
|
506
|
+
offset = 0;
|
|
507
507
|
}
|
|
508
508
|
if (elem) {
|
|
509
509
|
var y = elem.getBoundingClientRect().y;
|
|
510
|
+
scrollBackCount++;
|
|
510
511
|
// if the offset is off, we need to scroll into position (can be caused by lazy loaded images)
|
|
511
512
|
if (y > offset + 1 || y < offset - 1) {
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
513
|
+
window.scrollBy(0, y - offset);
|
|
514
|
+
}
|
|
515
|
+
else {
|
|
516
|
+
// don't need to scroll - it is right where we want it
|
|
516
517
|
scrolledElem = elem;
|
|
517
|
-
return true;
|
|
518
518
|
}
|
|
519
519
|
}
|
|
520
|
-
|
|
520
|
+
else {
|
|
521
|
+
checkCount++;
|
|
522
|
+
}
|
|
523
|
+
return true;
|
|
521
524
|
};
|
|
522
|
-
|
|
525
|
+
_a.label = 1;
|
|
523
526
|
case 1:
|
|
524
|
-
if (!(checkAndScroll()
|
|
527
|
+
if (!(checkAndScroll() && scrollBackCount <= maxScrolls && checkCount <= maxCheckCount)) return [3 /*break*/, 3];
|
|
525
528
|
return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, checkTime); })];
|
|
526
529
|
case 2:
|
|
527
|
-
|
|
530
|
+
_a.sent();
|
|
528
531
|
return [3 /*break*/, 1];
|
|
529
532
|
case 3:
|
|
530
533
|
if (scrolledElem) {
|
|
531
534
|
controller.log.debug('restored position to: ', scrolledElem);
|
|
532
535
|
}
|
|
533
536
|
else {
|
|
534
|
-
controller.log.debug('
|
|
537
|
+
controller.log.debug('attempted to scroll back to element with selector: ', element === null || element === void 0 ? void 0 : element.selector);
|
|
535
538
|
}
|
|
536
539
|
resolve();
|
|
537
540
|
return [2 /*return*/];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,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;
|
|
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;IA8I3B,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"}
|
|
@@ -334,7 +334,6 @@ export class SearchController extends AbstractController {
|
|
|
334
334
|
this.eventManager.on('restorePosition', async ({ controller, element }, next) => {
|
|
335
335
|
const scrollToPosition = () => {
|
|
336
336
|
return new Promise(async (resolve) => {
|
|
337
|
-
const offset = element?.domRect?.top || 0;
|
|
338
337
|
const maxCheckTime = 500;
|
|
339
338
|
const checkTime = 50;
|
|
340
339
|
const maxScrolls = Math.ceil(maxCheckTime / checkTime);
|
|
@@ -343,35 +342,39 @@ export class SearchController extends AbstractController {
|
|
|
343
342
|
let checkCount = 0;
|
|
344
343
|
let scrolledElem = undefined;
|
|
345
344
|
const checkAndScroll = () => {
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
345
|
+
let offset = element?.domRect?.top || 0;
|
|
346
|
+
let elem = document.querySelector(element?.selector);
|
|
347
|
+
// for case where the element clicked on has no height
|
|
348
|
+
while (elem && !elem.getBoundingClientRect().height) {
|
|
349
|
+
elem = elem.parentElement;
|
|
350
|
+
// original offset no longer applies since using different element
|
|
351
|
+
offset = 0;
|
|
352
352
|
}
|
|
353
353
|
if (elem) {
|
|
354
354
|
const { y } = elem.getBoundingClientRect();
|
|
355
|
+
scrollBackCount++;
|
|
355
356
|
// if the offset is off, we need to scroll into position (can be caused by lazy loaded images)
|
|
356
357
|
if (y > offset + 1 || y < offset - 1) {
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
358
|
+
window.scrollBy(0, y - offset);
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
// don't need to scroll - it is right where we want it
|
|
361
362
|
scrolledElem = elem;
|
|
362
|
-
return true;
|
|
363
363
|
}
|
|
364
364
|
}
|
|
365
|
-
|
|
365
|
+
else {
|
|
366
|
+
checkCount++;
|
|
367
|
+
}
|
|
368
|
+
return true;
|
|
366
369
|
};
|
|
367
|
-
while (checkAndScroll()
|
|
370
|
+
while (checkAndScroll() && scrollBackCount <= maxScrolls && checkCount <= maxCheckCount) {
|
|
368
371
|
await new Promise((resolve) => setTimeout(resolve, checkTime));
|
|
369
372
|
}
|
|
370
373
|
if (scrolledElem) {
|
|
371
374
|
controller.log.debug('restored position to: ', scrolledElem);
|
|
372
375
|
}
|
|
373
376
|
else {
|
|
374
|
-
controller.log.debug('
|
|
377
|
+
controller.log.debug('attempted to scroll back to element with selector: ', element?.selector);
|
|
375
378
|
}
|
|
376
379
|
resolve();
|
|
377
380
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@searchspring/snap-controller",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.45.0",
|
|
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.45.0",
|
|
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.45.0",
|
|
29
|
+
"@searchspring/snap-event-manager": "^0.45.0",
|
|
30
|
+
"@searchspring/snap-logger": "^0.45.0",
|
|
31
|
+
"@searchspring/snap-profiler": "^0.45.0",
|
|
32
|
+
"@searchspring/snap-store-mobx": "^0.45.0",
|
|
33
|
+
"@searchspring/snap-tracker": "^0.45.0",
|
|
34
|
+
"@searchspring/snap-url-manager": "^0.45.0"
|
|
35
35
|
},
|
|
36
36
|
"sideEffects": false,
|
|
37
37
|
"files": [
|
|
38
38
|
"dist/**/*"
|
|
39
39
|
],
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "e17a2adcdce980dfbd0ed7ad6e19228b1f5a2871"
|
|
41
41
|
}
|