@fastkit/scroller 0.2.13 → 0.3.3

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.
@@ -389,8 +389,12 @@ function scrollToElement(target, options = {}) {
389
389
  const cumulativeOffsetTarget = cumulativeOffset($target);
390
390
  const initialY = $container.scrollTop;
391
391
  const initialX = $container.scrollLeft;
392
- const targetY = cumulativeOffsetTarget.top - cumulativeOffsetContainer.top + offset.y;
393
- const targetX = cumulativeOffsetTarget.left - cumulativeOffsetContainer.left + offset.x;
392
+ const targetY = cumulativeOffsetTarget.top -
393
+ cumulativeOffsetContainer.top +
394
+ (offset.y || 0);
395
+ const targetX = cumulativeOffsetTarget.left -
396
+ cumulativeOffsetContainer.left +
397
+ (offset.x || 0);
394
398
  const diffX = x ? targetX - initialX : 0;
395
399
  const diffY = y ? targetY - initialY : 0;
396
400
  return scroll(diffX, diffY, _options, {
@@ -859,6 +863,13 @@ class Scroller extends ev.EV {
859
863
  this._isDocumentElement || this._isBodyElement ? window : this._el;
860
864
  this._setup();
861
865
  }
866
+ _scrollToElementAddtionalOffset;
867
+ setScrollToElementAddtionalOffset(offset) {
868
+ this._scrollToElementAddtionalOffset = offset;
869
+ }
870
+ deleteScrollToElementAddtionalOffset() {
871
+ delete this._scrollToElementAddtionalOffset;
872
+ }
862
873
  /**
863
874
  * インスタンスが実行可能になった際にresolveされるPromiseインスタンスを返却します。
864
875
  */
@@ -917,6 +928,7 @@ class Scroller extends ev.EV {
917
928
  delete this._resizeObserver;
918
929
  delete this._scrollToResult;
919
930
  delete this._visibilityListener;
931
+ this.deleteScrollToElementAddtionalOffset();
920
932
  this._setState(exports.ScrollerState.Destroyed);
921
933
  this.offAll();
922
934
  }
@@ -1428,6 +1440,34 @@ class Scroller extends ev.EV {
1428
1440
  ...this.scrollToElementSettingsDefaults,
1429
1441
  ...source,
1430
1442
  };
1443
+ let { _scrollToElementAddtionalOffset: addtionalOffset } = this;
1444
+ if (!addtionalOffset)
1445
+ return merged;
1446
+ if (typeof addtionalOffset === 'function') {
1447
+ addtionalOffset = addtionalOffset(this);
1448
+ }
1449
+ if (!addtionalOffset)
1450
+ return merged;
1451
+ if (typeof addtionalOffset === 'number') {
1452
+ addtionalOffset = {
1453
+ x: addtionalOffset,
1454
+ y: addtionalOffset,
1455
+ };
1456
+ }
1457
+ let { offset } = merged;
1458
+ if (!offset) {
1459
+ merged.offset = addtionalOffset;
1460
+ return merged;
1461
+ }
1462
+ if (typeof offset === 'number') {
1463
+ offset = {
1464
+ x: offset,
1465
+ y: offset,
1466
+ };
1467
+ }
1468
+ offset.x = (offset.x || 0) + (addtionalOffset.x || 0);
1469
+ offset.y = (offset.y || 0) + (addtionalOffset.y || 0);
1470
+ merged.offset = offset;
1431
1471
  return merged;
1432
1472
  }
1433
1473
  _clearScrollToResult() {
@@ -389,8 +389,12 @@ function scrollToElement(target, options = {}) {
389
389
  const cumulativeOffsetTarget = cumulativeOffset($target);
390
390
  const initialY = $container.scrollTop;
391
391
  const initialX = $container.scrollLeft;
392
- const targetY = cumulativeOffsetTarget.top - cumulativeOffsetContainer.top + offset.y;
393
- const targetX = cumulativeOffsetTarget.left - cumulativeOffsetContainer.left + offset.x;
392
+ const targetY = cumulativeOffsetTarget.top -
393
+ cumulativeOffsetContainer.top +
394
+ (offset.y || 0);
395
+ const targetX = cumulativeOffsetTarget.left -
396
+ cumulativeOffsetContainer.left +
397
+ (offset.x || 0);
394
398
  const diffX = x ? targetX - initialX : 0;
395
399
  const diffY = y ? targetY - initialY : 0;
396
400
  return scroll(diffX, diffY, _options, {
@@ -859,6 +863,13 @@ class Scroller extends ev.EV {
859
863
  this._isDocumentElement || this._isBodyElement ? window : this._el;
860
864
  this._setup();
861
865
  }
866
+ _scrollToElementAddtionalOffset;
867
+ setScrollToElementAddtionalOffset(offset) {
868
+ this._scrollToElementAddtionalOffset = offset;
869
+ }
870
+ deleteScrollToElementAddtionalOffset() {
871
+ delete this._scrollToElementAddtionalOffset;
872
+ }
862
873
  /**
863
874
  * インスタンスが実行可能になった際にresolveされるPromiseインスタンスを返却します。
864
875
  */
@@ -917,6 +928,7 @@ class Scroller extends ev.EV {
917
928
  delete this._resizeObserver;
918
929
  delete this._scrollToResult;
919
930
  delete this._visibilityListener;
931
+ this.deleteScrollToElementAddtionalOffset();
920
932
  this._setState(exports.ScrollerState.Destroyed);
921
933
  this.offAll();
922
934
  }
@@ -1428,6 +1440,34 @@ class Scroller extends ev.EV {
1428
1440
  ...this.scrollToElementSettingsDefaults,
1429
1441
  ...source,
1430
1442
  };
1443
+ let { _scrollToElementAddtionalOffset: addtionalOffset } = this;
1444
+ if (!addtionalOffset)
1445
+ return merged;
1446
+ if (typeof addtionalOffset === 'function') {
1447
+ addtionalOffset = addtionalOffset(this);
1448
+ }
1449
+ if (!addtionalOffset)
1450
+ return merged;
1451
+ if (typeof addtionalOffset === 'number') {
1452
+ addtionalOffset = {
1453
+ x: addtionalOffset,
1454
+ y: addtionalOffset,
1455
+ };
1456
+ }
1457
+ let { offset } = merged;
1458
+ if (!offset) {
1459
+ merged.offset = addtionalOffset;
1460
+ return merged;
1461
+ }
1462
+ if (typeof offset === 'number') {
1463
+ offset = {
1464
+ x: offset,
1465
+ y: offset,
1466
+ };
1467
+ }
1468
+ offset.x = (offset.x || 0) + (addtionalOffset.x || 0);
1469
+ offset.y = (offset.y || 0) + (addtionalOffset.y || 0);
1470
+ merged.offset = offset;
1431
1471
  return merged;
1432
1472
  }
1433
1473
  _clearScrollToResult() {
@@ -294,6 +294,9 @@ export declare class Scroller extends EV<ScrollerEventMap> {
294
294
  * @param el - Element、もしくはCSSクエリセレクタ文字列を指定します。
295
295
  */
296
296
  setElement(el?: Element | string | null): void;
297
+ private _scrollToElementAddtionalOffset;
298
+ setScrollToElementAddtionalOffset(offset: ScrollToElementAddtionalOffset | undefined): void;
299
+ deleteScrollToElementAddtionalOffset(): void;
297
300
  /**
298
301
  * インスタンスが実行可能になった際にresolveされるPromiseインスタンスを返却します。
299
302
  */
@@ -746,6 +749,14 @@ export declare function scrollToBottom(options?: ScrollOptions_2): ScrollResult;
746
749
  */
747
750
  export declare function scrollToElement(target: ScrollToElementTarget, options?: ScrollToElementOptions): ScrollResult;
748
751
 
752
+ export declare type ScrollToElementAddtionalOffset = number | {
753
+ x?: number;
754
+ y?: number;
755
+ } | ((scroller: Scroller) => number | {
756
+ x?: number;
757
+ y?: number;
758
+ } | undefined);
759
+
749
760
  /**
750
761
  * 要素へスクロールさせる際のオプション設定です。
751
762
  */
@@ -760,8 +771,8 @@ export declare interface ScrollToElementSettings {
760
771
  * x, y 個別に設定が可能ですが、シングルのnumberのみを指定した場合、x, y のそれぞれのオプションが有効な場合にのみその軸に設定されます。
761
772
  */
762
773
  offset: number | {
763
- x: number;
764
- y: number;
774
+ x?: number;
775
+ y?: number;
765
776
  };
766
777
  /**
767
778
  * 横スクロールの可否を示します。
@@ -381,8 +381,12 @@ function scrollToElement(target, options = {}) {
381
381
  const cumulativeOffsetTarget = cumulativeOffset($target);
382
382
  const initialY = $container.scrollTop;
383
383
  const initialX = $container.scrollLeft;
384
- const targetY = cumulativeOffsetTarget.top - cumulativeOffsetContainer.top + offset.y;
385
- const targetX = cumulativeOffsetTarget.left - cumulativeOffsetContainer.left + offset.x;
384
+ const targetY = cumulativeOffsetTarget.top -
385
+ cumulativeOffsetContainer.top +
386
+ (offset.y || 0);
387
+ const targetX = cumulativeOffsetTarget.left -
388
+ cumulativeOffsetContainer.left +
389
+ (offset.x || 0);
386
390
  const diffX = x ? targetX - initialX : 0;
387
391
  const diffY = y ? targetY - initialY : 0;
388
392
  return scroll(diffX, diffY, _options, {
@@ -857,6 +861,13 @@ class Scroller extends EV {
857
861
  this._isDocumentElement || this._isBodyElement ? window : this._el;
858
862
  this._setup();
859
863
  }
864
+ _scrollToElementAddtionalOffset;
865
+ setScrollToElementAddtionalOffset(offset) {
866
+ this._scrollToElementAddtionalOffset = offset;
867
+ }
868
+ deleteScrollToElementAddtionalOffset() {
869
+ delete this._scrollToElementAddtionalOffset;
870
+ }
860
871
  /**
861
872
  * インスタンスが実行可能になった際にresolveされるPromiseインスタンスを返却します。
862
873
  */
@@ -915,6 +926,7 @@ class Scroller extends EV {
915
926
  delete this._resizeObserver;
916
927
  delete this._scrollToResult;
917
928
  delete this._visibilityListener;
929
+ this.deleteScrollToElementAddtionalOffset();
918
930
  this._setState(ScrollerState.Destroyed);
919
931
  this.offAll();
920
932
  }
@@ -1437,6 +1449,34 @@ class Scroller extends EV {
1437
1449
  ...this.scrollToElementSettingsDefaults,
1438
1450
  ...source,
1439
1451
  };
1452
+ let { _scrollToElementAddtionalOffset: addtionalOffset } = this;
1453
+ if (!addtionalOffset)
1454
+ return merged;
1455
+ if (typeof addtionalOffset === 'function') {
1456
+ addtionalOffset = addtionalOffset(this);
1457
+ }
1458
+ if (!addtionalOffset)
1459
+ return merged;
1460
+ if (typeof addtionalOffset === 'number') {
1461
+ addtionalOffset = {
1462
+ x: addtionalOffset,
1463
+ y: addtionalOffset,
1464
+ };
1465
+ }
1466
+ let { offset } = merged;
1467
+ if (!offset) {
1468
+ merged.offset = addtionalOffset;
1469
+ return merged;
1470
+ }
1471
+ if (typeof offset === 'number') {
1472
+ offset = {
1473
+ x: offset,
1474
+ y: offset,
1475
+ };
1476
+ }
1477
+ offset.x = (offset.x || 0) + (addtionalOffset.x || 0);
1478
+ offset.y = (offset.y || 0) + (addtionalOffset.y || 0);
1479
+ merged.offset = offset;
1440
1480
  return merged;
1441
1481
  }
1442
1482
  _clearScrollToResult() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fastkit/scroller",
3
- "version": "0.2.13",
3
+ "version": "0.3.3",
4
4
  "description": "@fastkit/scroller",
5
5
  "buildOptions": {
6
6
  "name": "Scroller"
@@ -26,9 +26,9 @@
26
26
  },
27
27
  "homepage": "https://github.com/dadajam4/fastkit/tree/main/packages/scroller#readme",
28
28
  "dependencies": {
29
- "@fastkit/ev": "0.2.13",
30
- "@fastkit/visibility": "0.2.13",
31
- "@fastkit/tiny-logger": "0.2.13",
29
+ "@fastkit/ev": "0.3.3",
30
+ "@fastkit/visibility": "0.3.3",
31
+ "@fastkit/tiny-logger": "0.3.3",
32
32
  "bezier-easing": "^2.1.0"
33
33
  }
34
34
  }