@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.
- package/dist/scroller.cjs.js +42 -2
- package/dist/scroller.cjs.prod.js +42 -2
- package/dist/scroller.d.ts +13 -2
- package/dist/scroller.esm-bundler.js +42 -2
- package/package.json +4 -4
package/dist/scroller.cjs.js
CHANGED
|
@@ -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 -
|
|
393
|
-
|
|
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 -
|
|
393
|
-
|
|
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() {
|
package/dist/scroller.d.ts
CHANGED
|
@@ -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
|
|
764
|
-
y
|
|
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 -
|
|
385
|
-
|
|
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.
|
|
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.
|
|
30
|
-
"@fastkit/visibility": "0.
|
|
31
|
-
"@fastkit/tiny-logger": "0.
|
|
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
|
}
|