@searchspring/snap-controller 0.44.3 → 0.45.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.
@@ -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;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
+ {"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 offset, maxCheckTime, checkTime, maxScrolls, maxCheckCount, scrollBackCount, checkCount, scrolledElem, checkAndScroll;
488
- var _a;
489
- return __generator(this, function (_b) {
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
- if (elem) {
503
- scrollBackCount++;
504
- }
505
- else {
506
- checkCount++;
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
- elem.scrollIntoView();
513
- // after scrolling into view, use top value with offset (for when element at bottom)
514
- var top_1 = elem.getBoundingClientRect().top;
515
- window.scrollBy(0, -(offset - top_1));
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
- return false;
520
+ else {
521
+ checkCount++;
522
+ }
523
+ return true;
521
524
  };
522
- _b.label = 1;
525
+ _a.label = 1;
523
526
  case 1:
524
- if (!(checkAndScroll() || (scrollBackCount <= maxScrolls && checkCount <= maxCheckCount))) return [3 /*break*/, 3];
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
- _b.sent();
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('could not locate element with selector: ', element === null || element === void 0 ? void 0 : element.selector);
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;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
+ {"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
- const elem = document.querySelector(element?.selector);
347
- if (elem) {
348
- scrollBackCount++;
349
- }
350
- else {
351
- checkCount++;
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
- elem.scrollIntoView();
358
- // after scrolling into view, use top value with offset (for when element at bottom)
359
- const { top } = elem.getBoundingClientRect();
360
- window.scrollBy(0, -(offset - top));
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
- return false;
365
+ else {
366
+ checkCount++;
367
+ }
368
+ return true;
366
369
  };
367
- while (checkAndScroll() || (scrollBackCount <= maxScrolls && checkCount <= maxCheckCount)) {
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('could not locate element with selector: ', element?.selector);
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.44.3",
3
+ "version": "0.45.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.44.3",
23
+ "@searchspring/snap-toolbox": "^0.45.1",
24
24
  "css.escape": "1.5.1",
25
25
  "deepmerge": "4.3.1"
26
26
  },
27
27
  "devDependencies": {
28
- "@searchspring/snap-client": "^0.44.3",
29
- "@searchspring/snap-event-manager": "^0.44.3",
30
- "@searchspring/snap-logger": "^0.44.3",
31
- "@searchspring/snap-profiler": "^0.44.3",
32
- "@searchspring/snap-store-mobx": "^0.44.3",
33
- "@searchspring/snap-tracker": "^0.44.3",
34
- "@searchspring/snap-url-manager": "^0.44.3"
28
+ "@searchspring/snap-client": "^0.45.1",
29
+ "@searchspring/snap-event-manager": "^0.45.1",
30
+ "@searchspring/snap-logger": "^0.45.1",
31
+ "@searchspring/snap-profiler": "^0.45.1",
32
+ "@searchspring/snap-store-mobx": "^0.45.1",
33
+ "@searchspring/snap-tracker": "^0.45.1",
34
+ "@searchspring/snap-url-manager": "^0.45.1"
35
35
  },
36
36
  "sideEffects": false,
37
37
  "files": [
38
38
  "dist/**/*"
39
39
  ],
40
- "gitHead": "37ec16f63f5ba375d4cfbbddd32b8dbbd38deaa6"
40
+ "gitHead": "345e457a841f882f7162d032528313f5623f388d"
41
41
  }