coonlink-luxy 26.1.6 → 26.1.7
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/index.d.ts.map +1 -1
- package/dist/index.js +58 -116
- package/package.json +1 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC;IAC7C,OAAO,IAAI,IAAI,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC;IAC7C,OAAO,IAAI,IAAI,CAAC;CACjB;AAqLD,wBAAgB,kBAAkB,IAAI,oBAAoB,CAEzD;AAED,wBAAgB,uBAAuB,IAAI,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAEjF"}
|
package/dist/index.js
CHANGED
|
@@ -18,7 +18,6 @@ const defaults = {
|
|
|
18
18
|
respectReducedMotion: true,
|
|
19
19
|
respectOpenModalOverlay: true,
|
|
20
20
|
};
|
|
21
|
-
const SETTLE_EPS = 0.12;
|
|
22
21
|
function hasOpenModalOverlay() {
|
|
23
22
|
return !!document.querySelector('[data-slot="dialog-overlay"][data-state="open"],' +
|
|
24
23
|
'[data-slot="alert-dialog-overlay"][data-state="open"],' +
|
|
@@ -29,7 +28,7 @@ function extend(base, over) {
|
|
|
29
28
|
}
|
|
30
29
|
function getScrollTop() {
|
|
31
30
|
var _a, _b, _c;
|
|
32
|
-
return (
|
|
31
|
+
return (_c = (_b = (_a = window.scrollY) !== null && _a !== void 0 ? _a : document.documentElement.scrollTop) !== null && _b !== void 0 ? _b : document.body.scrollTop) !== null && _c !== void 0 ? _c : 0;
|
|
33
32
|
}
|
|
34
33
|
function readSpeedY(el) {
|
|
35
34
|
var _a;
|
|
@@ -42,85 +41,16 @@ class Engine {
|
|
|
42
41
|
this.targets = [];
|
|
43
42
|
this.wrapperOffset = 0;
|
|
44
43
|
this.scrollTop = 0;
|
|
45
|
-
this.
|
|
46
|
-
this.resizeObserver = null;
|
|
44
|
+
this.rafId = 0;
|
|
47
45
|
this.pauseForOverlay = false;
|
|
48
46
|
this.overlayObserver = null;
|
|
49
|
-
this.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if (!this.wrapper)
|
|
55
|
-
return;
|
|
56
|
-
const h = Math.max(this.wrapper.scrollHeight, this.wrapper.clientHeight);
|
|
57
|
-
document.body.style.height = `${h}px`;
|
|
58
|
-
if (this.scrollRaf === 0) {
|
|
59
|
-
const newST = getScrollTop();
|
|
60
|
-
const diff = Math.abs(newST - this.wrapperOffset);
|
|
61
|
-
if (diff > 0 && diff < 5) {
|
|
62
|
-
const maxOff = Math.max(0, h - window.innerHeight);
|
|
63
|
-
this.wrapperOffset = Math.max(0, Math.min(Math.round(newST), maxOff));
|
|
64
|
-
this.scrollTop = newST;
|
|
65
|
-
const y = Math.round(-this.wrapperOffset * 100) / 100;
|
|
66
|
-
this.wrapper.style.transform = `translate3d(0, ${y}px, 0)`;
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
this.ensureTicking();
|
|
47
|
+
this.onWindowResize = () => {
|
|
48
|
+
cancelAnimationFrame(this.rafId);
|
|
49
|
+
this.rafId = 0;
|
|
50
|
+
setTimeout(() => { if (this.wrapper)
|
|
51
|
+
this.startLoop(); }, 200);
|
|
71
52
|
};
|
|
72
53
|
}
|
|
73
|
-
isSettled() {
|
|
74
|
-
if (Math.abs(this.scrollTop - this.wrapperOffset) > SETTLE_EPS)
|
|
75
|
-
return false;
|
|
76
|
-
const ts = this.settings.targetSpeed;
|
|
77
|
-
const st = this.scrollTop;
|
|
78
|
-
for (let i = 0; i < this.targets.length; i++) {
|
|
79
|
-
const t = this.targets[i];
|
|
80
|
-
const idealY = st * Number(ts) * Number(t.speedY);
|
|
81
|
-
if (Math.abs(idealY - t.top) > SETTLE_EPS)
|
|
82
|
-
return false;
|
|
83
|
-
if (t.horizontal) {
|
|
84
|
-
const idealX = st * Number(ts) * Number(t.speedX);
|
|
85
|
-
if (Math.abs(idealX - t.left) > SETTLE_EPS)
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
91
|
-
stopScrollLoop() {
|
|
92
|
-
window.removeEventListener('scroll', this.onScrollResume);
|
|
93
|
-
if (this.scrollRaf) {
|
|
94
|
-
window.cancelAnimationFrame(this.scrollRaf);
|
|
95
|
-
this.scrollRaf = 0;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
ensureTicking() {
|
|
99
|
-
if (this.pauseForOverlay || !this.wrapper)
|
|
100
|
-
return;
|
|
101
|
-
window.removeEventListener('scroll', this.onScrollResume);
|
|
102
|
-
if (this.scrollRaf !== 0)
|
|
103
|
-
return;
|
|
104
|
-
const tick = () => {
|
|
105
|
-
if (this.pauseForOverlay || !this.wrapper) {
|
|
106
|
-
this.scrollRaf = 0;
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
this.scrollTop = getScrollTop();
|
|
110
|
-
this.wrapperUpdate();
|
|
111
|
-
for (let i = 0; i < this.targets.length; i++)
|
|
112
|
-
this.targetsUpdate(this.targets[i]);
|
|
113
|
-
if (this.isSettled()) {
|
|
114
|
-
this.wrapperOffset = Math.round(this.scrollTop);
|
|
115
|
-
this.wrapperUpdate();
|
|
116
|
-
this.scrollRaf = 0;
|
|
117
|
-
window.addEventListener('scroll', this.onScrollResume, { passive: true });
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
this.scrollRaf = window.requestAnimationFrame(tick);
|
|
121
|
-
};
|
|
122
|
-
this.scrollRaf = window.requestAnimationFrame(tick);
|
|
123
|
-
}
|
|
124
54
|
syncOverlayPause() {
|
|
125
55
|
if (!this.settings.respectOpenModalOverlay) {
|
|
126
56
|
this.pauseForOverlay = false;
|
|
@@ -130,12 +60,6 @@ class Engine {
|
|
|
130
60
|
if (blocked === this.pauseForOverlay)
|
|
131
61
|
return;
|
|
132
62
|
this.pauseForOverlay = blocked;
|
|
133
|
-
if (blocked) {
|
|
134
|
-
this.stopScrollLoop();
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
this.onResize();
|
|
138
|
-
}
|
|
139
63
|
}
|
|
140
64
|
attachOverlayWatcher() {
|
|
141
65
|
this.detachOverlayWatcher();
|
|
@@ -153,6 +77,52 @@ class Engine {
|
|
|
153
77
|
this.overlayObserver = null;
|
|
154
78
|
this.pauseForOverlay = false;
|
|
155
79
|
}
|
|
80
|
+
startLoop() {
|
|
81
|
+
if (this.rafId !== 0 || !this.wrapper)
|
|
82
|
+
return;
|
|
83
|
+
const loop = () => {
|
|
84
|
+
if (!this.wrapper) {
|
|
85
|
+
this.rafId = 0;
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// Keep body height in sync with wrapper content height
|
|
89
|
+
const h = Math.max(this.wrapper.scrollHeight, this.wrapper.clientHeight);
|
|
90
|
+
if (parseInt(document.body.style.height) !== h) {
|
|
91
|
+
document.body.style.height = `${h}px`;
|
|
92
|
+
}
|
|
93
|
+
if (!this.pauseForOverlay) {
|
|
94
|
+
this.scrollTop = getScrollTop();
|
|
95
|
+
this.wrapperUpdate(h);
|
|
96
|
+
for (let i = 0; i < this.targets.length; i++)
|
|
97
|
+
this.targetsUpdate(this.targets[i]);
|
|
98
|
+
}
|
|
99
|
+
this.rafId = window.requestAnimationFrame(loop);
|
|
100
|
+
};
|
|
101
|
+
this.rafId = window.requestAnimationFrame(loop);
|
|
102
|
+
}
|
|
103
|
+
wrapperUpdate(contentHeight) {
|
|
104
|
+
if (!this.wrapper)
|
|
105
|
+
return;
|
|
106
|
+
this.wrapperOffset += (this.scrollTop - this.wrapperOffset) * this.settings.wrapperSpeed;
|
|
107
|
+
const maxOffset = Math.max(0, contentHeight - window.innerHeight);
|
|
108
|
+
this.wrapperOffset = Math.max(0, Math.min(this.wrapperOffset, maxOffset));
|
|
109
|
+
const y = Math.round(-this.wrapperOffset * 100) / 100;
|
|
110
|
+
this.wrapper.style.transform = `translate3d(0, ${y}px, 0)`;
|
|
111
|
+
}
|
|
112
|
+
targetsUpdate(target) {
|
|
113
|
+
const ts = this.settings.targetSpeed;
|
|
114
|
+
const tp = this.settings.targetPercentage;
|
|
115
|
+
target.top += (this.scrollTop * Number(ts) * Number(target.speedY) - target.top) * tp;
|
|
116
|
+
target.left += (this.scrollTop * Number(ts) * Number(target.speedX) - target.left) * tp;
|
|
117
|
+
const targetOffsetTop = parseInt(String(target.percentage), 10) - target.top - parseInt(String(target.offset), 10);
|
|
118
|
+
let offsetY = Math.round(targetOffsetTop * -100) / 100;
|
|
119
|
+
let offsetX = 0;
|
|
120
|
+
if (target.horizontal) {
|
|
121
|
+
const targetOffsetLeft = parseInt(String(target.percentage), 10) - target.left - parseInt(String(target.offset), 10);
|
|
122
|
+
offsetX = Math.round(targetOffsetLeft * -100) / 100;
|
|
123
|
+
}
|
|
124
|
+
target.elm.style.transform = `translate3d(${offsetX}px, ${offsetY}px, 0)`;
|
|
125
|
+
}
|
|
156
126
|
init(options) {
|
|
157
127
|
var _a;
|
|
158
128
|
this.destroy();
|
|
@@ -191,44 +161,16 @@ class Engine {
|
|
|
191
161
|
percentage: percentage ? parseInt(percentage, 10) || 0 : 0,
|
|
192
162
|
});
|
|
193
163
|
}
|
|
194
|
-
|
|
195
|
-
this.resizeObserver.observe(this.wrapper);
|
|
196
|
-
window.addEventListener('resize', this.onResize);
|
|
164
|
+
window.addEventListener('resize', this.onWindowResize);
|
|
197
165
|
this.attachOverlayWatcher();
|
|
198
|
-
|
|
199
|
-
this.ensureTicking();
|
|
166
|
+
this.startLoop();
|
|
200
167
|
return true;
|
|
201
168
|
}
|
|
202
|
-
wrapperUpdate() {
|
|
203
|
-
if (!this.wrapper)
|
|
204
|
-
return;
|
|
205
|
-
this.wrapperOffset += (this.scrollTop - this.wrapperOffset) * this.settings.wrapperSpeed;
|
|
206
|
-
const maxOffset = Math.max(0, document.body.scrollHeight - window.innerHeight);
|
|
207
|
-
this.wrapperOffset = Math.max(0, Math.min(this.wrapperOffset, maxOffset));
|
|
208
|
-
const y = Math.round(-this.wrapperOffset * 100) / 100;
|
|
209
|
-
this.wrapper.style.transform = `translate3d(0, ${y}px, 0)`;
|
|
210
|
-
}
|
|
211
|
-
targetsUpdate(target) {
|
|
212
|
-
const ts = this.settings.targetSpeed;
|
|
213
|
-
const tp = this.settings.targetPercentage;
|
|
214
|
-
target.top += (this.scrollTop * Number(ts) * Number(target.speedY) - target.top) * tp;
|
|
215
|
-
target.left += (this.scrollTop * Number(ts) * Number(target.speedX) - target.left) * tp;
|
|
216
|
-
const targetOffsetTop = parseInt(String(target.percentage), 10) - target.top - parseInt(String(target.offset), 10);
|
|
217
|
-
let offsetY = Math.round(targetOffsetTop * -100) / 100;
|
|
218
|
-
let offsetX = 0;
|
|
219
|
-
if (target.horizontal) {
|
|
220
|
-
const targetOffsetLeft = parseInt(String(target.percentage), 10) - target.left - parseInt(String(target.offset), 10);
|
|
221
|
-
offsetX = Math.round(targetOffsetLeft * -100) / 100;
|
|
222
|
-
}
|
|
223
|
-
target.elm.style.transform = `translate3d(${offsetX}px, ${offsetY}px, 0)`;
|
|
224
|
-
}
|
|
225
169
|
destroy() {
|
|
226
|
-
var _a;
|
|
227
170
|
this.detachOverlayWatcher();
|
|
228
|
-
this.
|
|
229
|
-
|
|
230
|
-
(
|
|
231
|
-
this.resizeObserver = null;
|
|
171
|
+
cancelAnimationFrame(this.rafId);
|
|
172
|
+
this.rafId = 0;
|
|
173
|
+
window.removeEventListener('resize', this.onWindowResize);
|
|
232
174
|
document.body.style.height = '';
|
|
233
175
|
if (this.wrapper) {
|
|
234
176
|
this.wrapper.removeAttribute('style');
|
package/package.json
CHANGED